Java doesn't work with regex \s, says: invalid escape sequence


Question

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 (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!

1
38
7/31/2014 8:03:23 PM

Accepted Answer

You need to escape the slash

start_from  = start_from.replaceAll("\\s", "+");
60
7/31/2014 8:02:44 PM

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", "+");

Licensed under: CC-BY-SA with attribution
Not affiliated with: Stack Overflow
Icon