#regex #scala #foldleft
Вопрос:
Я пытаюсь использовать раскладку, чтобы заменить имена пользователей скрытым значением и распечатать их
private def removeNamesFromErrorMessage(errorMessage: String): Unit = {
val userNames = List("mary", "john")
val errorMessage = "users mary and john have not paid their fee "
val newError = userNames.foldLeft(errorMessage)((message, name) => message.replaceAll(s"${name}:\s?[a-zA-Z0-9-_.] ", s"${name}: <HIDDEN USER>"))
println(newError)
}
Однако он все еще выводит имена пользователей , и я получаю сообщение об message.replaceAll
ошибке, в котором говорится:
Якорь » $ » в неожиданном положении
Ответ №1:
Нет необходимости использовать регулярное выражение.
val userNames = List("mary", "john")
val errorMessage = "users mary and john have not paid their fee"
val newError = userNames.foldLeft(errorMessage)((message, name) => message.replaceAll(name,"<HIDDEN USER>"))
println(newError)
users <HIDDEN USER> and <HIDDEN USER> have not paid their fee
Ответ №2:
Нет необходимости использовать foldLeft()
.
val userNames = List("mary", "john")
val errorMessage = "users mary and john have not paid their fee"
val newError = userNames.mkString("|").r
.replaceAllIn(errorMessage, "<HIDDEN USER>")