我有一个字符串,只想用字符串" --linebreak-- "
替换其中的所有换行符。
仅仅写下来就足够了:
string = string.replaceAll("\n", " --linebreak-- ");
我对它的正则表达式部分感到困惑。换行符需要两个斜杠吗?这够好吗?
答案 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)
答案 6 :(得分:1)
对于新行,有一个属性
System.getProperty("line.separator")
这里就你的例子而言,
string.replaceAll("\n", System.getProperty("line.separator"));