Java doesn't work with regex \s, says: invalid escape sequence
I want to replace all whitespace characters in a string with a "+" and all "ß" with "ss"... it works well for "ß", but somehow eclipse won't let me use \s for a whitespace.. I tried "\t" instead, but it doesn't work either.. I get the following error:
Invalid escape sequence 开发者_如何学Python(valid ones are \b \t \n \f \r \" \' \ )
this is my code:
try {
String temp1 = from.getText().toString();
start_from = temp1.replaceAll("ß", "ss");
start_from = start_from.replaceAll("\s", "+");
}
why doesn't it work? is it a problem with android, eclipse or what?
thanks in advance!
You need to escape the slash
start_from = start_from.replaceAll("\\s", "+");
The problem is that \
is an escape character in java as well as regex patterns. If you want to match the regex pattern \n
, say, and you'd go ahead and write
replaceAll("\n", "+");
The regex pattern would not end up being \n
: it would en up being an actual newline, since that's what "\n"
means in Java. If you want the pattern to contain a backslash, you'll need to make sure you escape that backslash, so that it is not treated as a special character within the string.
replaceAll("\\s", "+");
You can use the java.util.regex.Pattern class and use something like p = Pattern.compile("\s");
in combination with p.matcher(start_from).replaceAll("+")
. Alternatively, just escape your "\s" metacharacter as "\\s".
精彩评论