newbie
newbie

Reputation: 24635

How can I replace \ with / in Java?

I tried with following regex, but it didn't work.

myString.replaceAll("\", "/");

Exception:

java.util.regex.PatternSyntaxException: Unexpected internal error near index 1 \ ^ at java.util.regex.Pattern.error(Unknown Source) at java.util.regex.Pattern.compile(Unknown Source) at java.util.regex.Pattern.(Unknown Source) at java.util.regex.Pattern.compile(Unknown Source) at java.lang.String.replaceAll(Unknown Source)

Upvotes: 3

Views: 6371

Answers (2)

dacwe
dacwe

Reputation: 43504

Your code should not even compile.

"\" escapes the " so that the string continues. Writing String h = "\"hello\""; makes the string h contain "hello".

If we change then change it to it to "\\" (escaping the backslash) we run into another problem. The regular expression then tries to escape the next character. For example writing "\\d+" is a valid regular expression (matching digits).


In you case however you do not need regular expressions at all. Just use the replace(char, char) method of the string, it replaces all characters.

myString.replace('\\', '/');

By the way, if you are replacing paths, you should look at File.separator to get the systems path separator character.

Upvotes: 8

nganju
nganju

Reputation: 730

Sometimes you need 4 slashes, because backslash is an escape character for regex as well. Try

myString.replaceAll("\\\\", "/");

Upvotes: 3

Related Questions