我正在使用 scala 2.13 并有一個這樣的字串:
-----BEGIN RSA PRIVATE KEY-----
MIIEpAIBAAKCAQEAtp/Uo28kOjROL50aajnpK25CJoVoic2bqqu6OS2baWWD9fT2
ESqq8mbFxYN3O7JXbs 74YpTdg1jSUALOz9zj/H2eCF71QYvoHmdoi0iiQuy3gS1
6YczVvBvinSwfEnO6Wi/Xx6AC8urdr==
-----END RSA PRIVATE KEY-----
我想提取出來
MIIEpAIBAAKCAQEAtp/Uo28kOjROL50aajnpK25CJoVoic2bqqu6OS2baWWD9fT2
ESqq8mbFxYN3O7JXbs 74YpTdg1jSUALOz9zj/H2eCF71QYvoHmdoi0iiQuy3gS1
6YczVvBvinSwfEnO6Wi/Xx6AC8urdr==
我使用它如下:
val privateKey =
"-----BEGIN RSA PRIVATE KEY-----\r\nMIIEpAIBAAKCAQEAtp/Uo28kOjROL50aajnpK25CJoVoic2bqqu6OS2baWWD9fT2ESqq8mbFxYN3O7JXbs 74YpTdg1jSUALOz9zj/H2eCF71QYvoHmdoi0iiQuy3gS16YczVvBvinSwfEnO6Wi/Xx6AC8urdr==\r\n-----END RSA PRIVATE KEY-----\r\n"
val result = privateKey match {
case s"-----BEGIN RSA PRIVATE KEY-----\r\n$privateKeyB64\r\n-----END RSA PRIVATE KEY-----\r\n" => privateKeyB64
case _ => {
throw AEMServiceAccountError(s"Invalid RSA Private Key - Please check service account credentials for AEM.")
}
}
println(result)
但上面的代碼總是拋出Invalid RSA Private Key - Please check service account credentials for AEM.
有人可以幫我除錯我在這里做錯了什么嗎?
uj5u.com熱心網友回復:
也許原因是在模式匹配中呼叫 unapply 與正則運算式一起作業
val regex = "-----BEGIN RSA PRIVATE KEY-----\r\n(.*)\r\n-----END RSA PRIVATE KEY-----\r\n".r
val result = privateKey match {
case regex(privateKeyB64) => privateKeyB64
case _ => throw AEMServiceAccountError(s"Invalid RSA Private Key - Please check service account credentials for AEM.")
}
uj5u.com熱心網友回復:
在外部提取變數可以解決問題。不知道為什么它不能行內作業。
val expectedPrivateKey = s"-----BEGIN RSA PRIVATE KEY-----\r\n$privateKeyB64\r\n-----END RSA PRIVATE KEY-----\r\n"
val result = privateKey match {
case `expectedPrivateKey` => privateKeyB64
case _ => {
throw AEMServiceAccountError(s"Invalid RSA Private Key - Please check service account credentials for AEM.")
}
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/520539.html
標籤:斯卡拉模式匹配字符串插值
