基本上,我要做的就是从Java中的String中删除换行符。我看了几十个问类似问题的帖子,他们都说了同样的话,但似乎没有一个对我有用。这是我有3行的所有代码:
String text = "\\n texttexttext \\n";
text = text.replaceAll("\\n", "");
System.out.println(text);
该字符串类似于我实际尝试使用的字符串,但即使使用此字符串,我也找不到换行符并替换它。 replaceAll只是不会看到它,我不知道为什么。
我已经尝试了很多其他的事情
text = text.replaceAll("\\n", "").replaceAll("\\r", "");
或
text = text.replaceAll("\\r\\n|\\r|\\n", " ");
但是没有人能找到这个角色。我甚至无法使用Regex Pattern和Matcher对象找到它。我正在做的唯一不寻常的事情就是在Junit Test bean中做这件事,但我无法相信会做任何事情。
答案 0 :(得分:7)
您的原始text
中没有换行符。您已经转义了反斜杠,而不是n
,因此您的\
字符串中包含实际的反斜杠n
和text
字符。
您必须转义正则表达式中的反斜杠字符,但不能转义为文字字符串文本。
如果您将text
初始化为"\n texttexttext \n"
,那么它会按预期查找并替换这些换行符。
答案 1 :(得分:4)
String newLine = System.getProperty("line.separator")
System.out.println(newLine.contains("\n")); // this is a new line
System.out.println(newLine.contains("\\n"));
输出:
true
false
答案 2 :(得分:0)
由Jon Lin评论
您的示例文字实际上并未谈到换行符 - \\n
是字符串\n
。
另一个谬论是replaceAll
期望正则表达式作为第一个输入。因此,\\n
实际上已替换为\n
,因为\
是转义字符,然后将其解释为换行符 - 双重转义的情况,因此在输入文本中\\
不匹配。
如果您尝试
text = text.replaceAll("\\\\n", "");
至少你得到了预期的结果,因为Java字符串和正则表达式都将\
解释为转义字符。
答案 3 :(得分:0)
除了@ rgettman的答案之外,为了使它对社区有用,下面是一个很棒的Java程序(有关更多信息,您可以阅读here中的整篇文章。),它取代了换行符。
public class StringReplaceTask{
public static void main(String args[]) {
// Removing new line characters form Java String
String sample="We are going to replace newline character \\n "
+ "New line should start now if \\n \n is working";
System.out.println("Original String: " + sample);
//replacing \n or newline character so that all text come in one line
System.out.println("Escaped String: " + sample.replaceAll("\n", ""));
// removing line breaks from String read from text file in Java
String text = readFileAsString("words.txt");
text = text.replace(System.getProperty("line.separator"), "");
}
答案 4 :(得分:-2)
如果为head = 'Hello'
,但当您为print(head)
-> 'Hello\n'
时
您可以通过\n
或rstrip()
remove()
您可以使用我的代码
**head=a[0:(len(head)-1)]**
删除隐藏在字符串中的\n
。
(在py 3上测试) 祝你好运!