Java 字符串替换所有方法都给出非法重复错误?

2022-09-01 16:38:38

我有一个字符串,当我尝试运行该方法时,我得到这个奇怪的错误:replaceAll

String str = "something { } , op";
str = str.replaceAll("o", "\n"); // it works fine
str = str.replaceAll("{", "\n"); // does not work

我得到一个奇怪的错误:

Exception in thread "main" java.util.regex.PatternSyntaxException:
Illegal repetition {  

如何替换出现的 ?"{"


答案 1

A 是一个正则表达式元字符,用于范围重复作为 。要匹配文本,您需要通过在它前面加上一个 :{{min,max}{\\

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

答案 2

如果您真的打算替换单个字符而不是正则表达式(这似乎是您在这里想要做的),则应使用 ,而不是 。尽管它的名字,将取代所有事件,而不仅仅是第一个。.replace().replaceAll().replace()

如果你想知道, 实现 ,所以会工作。StringCharSequence.replace("{", "\n")