Java String ReplaceAll method giving illegal repetition error?

后端 未结 3 903
一整个雨季
一整个雨季 2020-12-01 23:28

I have a string and when I try to run the replaceAll method, I am getting this strange error:

String str = \"something { } , op\";
str = str.r         


        
相关标签:
3条回答
  • 2020-12-01 23:53

    A { is a regex meta-character used for range repetitions as {min,max}. To match a literal { you need to escape it by preceding it with a \\:

    str = str.replaceAll("\\{", "\n"); // does work
    
    0 讨论(0)
  • 2020-12-01 23:57

    If you really intend to replace single characters and not regexes (which is what you seem to want to do here), you should use .replace(), not .replaceAll(). In spite of its name, .replace() will replace ALL occurrences, not just the first one.

    And in case you wonder, String implements CharSequence, so .replace("{", "\n") will work.

    0 讨论(0)
  • 2020-12-02 00:11

    Escape it:

    str = str.replaceAll("\\{", "\n"); 
    

    This is needed since the first argument to replaceAll() is a regular expression, and { has a special meaning in Java regular expressions (it's a repetition operator, hence the error message).

    0 讨论(0)
提交回复
热议问题