Java Regex - 使用String的replaceAll方法替换换行符

Tim*_*Tim 34 java regex newline

我有一个字符串,并希望简单地用字符串替换它中的所有换行符" --linebreak-- ".

只写下来就足够了:

string = string.replaceAll("\n", " --linebreak-- ");
Run Code Online (Sandbox Code Playgroud)

我对它的正则表达式部分感到困惑.换行符需要两个斜杠吗?这够好吗?

Boh*_*ian 55

不要使用正则表达式!.您只需要一个纯文本匹配来替换"\n".

用于replace()将文字字符串替换为另一个:

string = string.replace("\n", " --linebreak-- ");
Run Code Online (Sandbox Code Playgroud)

请注意,replace()仍然会替换所有出现的情况,replaceAll()区别在于replaceAll()使用正则表达式进行搜索.

  • @Tim调用`replace()`*一次*替换*all*occurrence(不需要"循环") (6认同)
  • @Amalgovinus`inplace()`将它们全部替换掉​​.问题是`replaceAll()`命名错误:两个方法都替换了所有出现 - 它们之间的唯一区别是`replaceAll()`使用*regex*来查找匹配,而replace使用纯文本. (6认同)
  • 所以你是说在循环中使用replace()而不是使用replaceAll()一次?我不明白为什么这是一个更好的主意? (2认同)

kan*_*arp 36

使用以下正则表达式:

 s.replaceAll("\\r?\\n", " --linebreak-- ")
Run Code Online (Sandbox Code Playgroud)

UNIX和Windows操作系统只有两个换行符.


Psh*_*emo 26

由于Java 8正则表达式引擎支持\R代表任何行分隔符(更多信息:https://stackoverflow.com/a/31060125/1393766).

因此,如果您可以访问Java 8,则可以使用

string = string.replaceAll("\\R", " --linebreak-- ");
Run Code Online (Sandbox Code Playgroud)