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

时间:2012-03-24 03:55:49

标签: java regex newline

我有一个字符串,只想用字符串" --linebreak-- "替换其中的所有换行符。

仅仅写下来就足够了:

string = string.replaceAll("\n", " --linebreak-- ");

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

7 个答案:

答案 0 :(得分:48)

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

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

string = string.replace("\n", " --linebreak-- ");

请注意replace()仍会替换所有次出现,replaceAll()也是如此 - 区别在于replaceAll()使用正则表达式进行搜索。

答案 1 :(得分:35)

使用以下正则表达式:

 s.replaceAll("\\r?\\n", " --linebreak-- ")

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

答案 2 :(得分:24)

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

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

string = string.replaceAll("\\R", " --linebreak-- ");

答案 3 :(得分:3)

无需2 backslashes

 String string = "hello \n world" ;
 String str = string.replaceAll("\n", " --linebreak-- ");
 System.out.println(str);

输出= hello --linebreak-- world

答案 4 :(得分:2)

只是为了完整性而添加它,因为2反斜杠是真实的。

请参阅以下SO问题中的@dasblinkenlight答案(谈论\ t但它也适用于\ n):

java, regular expression, need to escape backslash in regex

“转义序列有两种解释:首先是Java编译器,然后是regexp引擎。当Java编译器看到两个斜杠时,它会用一个斜杠替换它们。当有一个斜杠后, Java用一个选项卡替换它;当有一个双斜杠时,Java将它单独留下。但是,因为两个斜杠已经被一个斜杠替换,所以regexp引擎看到\ t,并将其解释为一个选项卡。“< / p>

答案 5 :(得分:1)

看起来不错。你不需要2个反斜杠。

http://docs.oracle.com/javase/6/docs/api/java/util/regex/Pattern.html#sum

答案 6 :(得分:1)

对于新行,有一个属性

System.getProperty("line.separator")

这里就你的例子而言,

string.replaceAll("\n", System.getProperty("line.separator"));