2011-09-08 72 views
1

我有一个这样的字符串:Java的替代特殊字符的字符串

BEGIN\n\n\n\nTHIS IS A STRING\n\nEND 

而且我要删除所有新行字符,并有结果为:

BEGIN THIS IS A STRING END 

我该怎么办完成这个?根据我的经验,标准的API函数将不起作用。

+0

所以,你有文字上的'\ N'?没有实际的换行符? –

+0

[文本清理和替换:从Java中的文本中删除\ n]的可能重复(http://stackoverflow.com/questions/542226/text-cleaning-and-replacement-delete-n-from-a-text- in-java) – CoolBeans

回答

1

一个简单的replace('\n', ' ')会导致字符串变成:

BEGIN THIS IS A STRING END 
     ****    ** 

其中*的是空间。如果你想要一个空格,尝试replaceAll("[\r\n]{2,}", " ")

而如果他们不换行,但字面"\n"的枯萎尝试:

replace("\\n", " ") 

或:

replaceAll("(\\\\n){2,}", " ") 
0

当然,标准API可以工作,但是您可能必须加倍转义(“\\ n”)。

+0

like:str.replaceAll(“\\ n”,“”)? – Victor

+0

是............ – Tristan

2

尝试str.replaceAll("\\\\n", ""); - 这就是所谓的双重转义:)

1
String str = "BEGIN\n\n\n\nTHIS IS A STRING\n\nEND;"; 

str = str.replaceAll("\\\n", " "); 

// Remove extra white spaces 
while (str.indexOf(" ") > 0) { 
    str = str.replaceAll(" ", " "); 
} 
+0

这给出了确切的预期输出。 –

1

该作品对我来说:

String s = "BEGIN\n\n\n\nTHIS IS A STRING\n\nEND"; 
String t = s.replaceAll("[\n]+", " "); 
System.out.println(t); 

关键是reg-ex。

0

我通常不用Java编码,但是快速搜索使我相信String.trim应该适合您。它说,它消除了领先,并与\ n \ t等一起尾随空白......

0

希望这个片段将帮助,

Scanner sc = new Scanner(new StringReader("BEGIN\n\n\n\nTHIS IS A STRING\n\nEND ")); 
    String out = ""; 
    while (sc.hasNext()) { 
     out += sc.next() + " "; 
    } 
    System.out.println(out);