如何替换给定字符串中的字符。
我写了下面的代码,但是这里迭代了字符。
val chars = "\\`*{}[]()<>#+:~'%^&@?;,.\"!$=|"
var newString = inputString
chars.map { c =>
if (inputString.contains(c)){
newString = newString.replace(c, '_')
}
}
我正在查看类似于下面的代码。不幸的是,这是一个错误。有人可以帮我弄清楚错误吗?
scala> "hello:world".replaceAll("\\`*{}[]()>#+:~'%^&@<?;,\"!$=|.", "_")
java.util.regex.PatternSyntaxException: Illegal repetition near index 2
\`*{}[]()>#+:~'%^&@<?;,"!$=|.
^
事实证明,第一个参数需要是参数的正则表达式,而不是字符列表,但我仍然会收到错误:
scala> "hello:world".replaceAll("[`*{}[]()>#+:~'%^&@<?;,\"!$=|.]", "_")
java.util.regex.PatternSyntaxException: Unclosed character class near index 29
[`*{}[]()>#+:~'%^&@<?;,"!$=|.]
^
答案 0 :(得分:3)
你没有逃避正则表达式中需要转义的所有字符。 这有效:
"hello:world".replaceAll("[\\`\\*{}\\[\\]()>#\\+:\\~'%\\^&@<\\?;,\"!\\$=\\|\\.]", "_")
但我猜你真正想要的是:
"hello:world".replaceAll("\\W", "_")