问题
I have a string and would like to simply replace all of the newlines in it with the string " --linebreak-- "
.
Would it be enough to just write:
string = string.replaceAll("\n", " --linebreak-- ");
I'm confused with the regex part of it. Do I need two slashes for the newline? Is this good enough?
回答1:
Don't use regex!. You only need a plain-text match to replace "\n"
.
Use replace() to replace a literal string with another:
string = string.replace("\n", " --linebreak-- ");
Note that replace()
still replaces all occurrences, as does replaceAll()
- the difference is that replaceAll() uses regex to search.
回答2:
Use below regex:
s.replaceAll("\\r?\\n", " --linebreak-- ")
There's only really two newlines for UNIX and Windows OS.
回答3:
Since Java 8 regex engine supports \R
which represents any line separator (little more info: https://stackoverflow.com/a/31060125/1393766).
So if you have access to Java 8 you can use
string = string.replaceAll("\\R", " --linebreak-- ");
回答4:
No need for 2 backslashes
.
String string = "hello \n world" ;
String str = string.replaceAll("\n", " --linebreak-- ");
System.out.println(str);
Output = hello --linebreak-- world
回答5:
Just adding this for completeness, because the 2 backslash thing is real.
Refer to @dasblinkenlight answer in the following SO question (talking about \t but it applies for \n as well):
java, regular expression, need to escape backslash in regex
"There are two interpretations of escape sequences going on: first by the Java compiler, and then by the regexp engine. When Java compiler sees two slashes, it replaces them with a single slash. When there is t following a slash, Java replaces it with a tab; when there is a t following a double-slash, Java leaves it alone. However, because two slashes have been replaced by a single slash, regexp engine sees \t, and interprets it as a tab."
回答6:
Looks good. You don't want 2 backslashes.
http://docs.oracle.com/javase/6/docs/api/java/util/regex/Pattern.html#sum
回答7:
for new line there is a property
System.getProperty("line.separator")
Here as for your example,
string.replaceAll("\n", System.getProperty("line.separator"));
来源:https://stackoverflow.com/questions/9849015/java-regex-using-strings-replaceall-method-to-replace-newlines