从Javastring中删除行尾字符

我有这样的string

"hello java book" 

我想从string(hello \ r \ njava \ r \ nbook)中删除\ r和\ n。 我想要一个string作为“hellojavabook”。 我怎样才能做到这一点?

正则expression式与replaceAll。

 public class Main { public static void main(final String[] argv) { String str; str = "hello\r\njava\r\nbook"; str = str.replaceAll("(\\r|\\n)", ""); System.out.println(str); } } 

如果您只想在对(\上面的代码删除\ r或\ n)时删除\ r \ n,请改为:

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

如果您想要避免使用正则expression式,或者必须定位到更早的JVM,则String.replace()将执行:

 str=str.replace("\r","").replace("\n",""); 

并删除一个CRLF对:

 str=str.replace("\r\n",""); 

后者比构build正则expression式来做同样的事情更有效率。 但是我认为前者会比正则expression式更快,因为string只被parsing一次。

 public static void main(final String[] argv) { String str; str = "hello\r\n\tjava\r\nbook"; str = str.replaceAll("(\\r|\\n|\\t)", ""); System.out.println(str); } 

在正则expression式中添加列表也是有用的。

给定一个stringstr:

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

您是否尝试过使用replaceAll方法来replace\ n或\ r与空string的任何发生?

 static byte[] discardWhitespace(byte[] data) { byte groomedData[] = new byte[data.length]; int bytesCopied = 0; for (int i = 0; i < data.length; i++) { switch (data[i]) { case (byte) '\n' : case (byte) '\r' : break; default: groomedData[bytesCopied++] = data[i]; } } byte packedData[] = new byte[bytesCopied]; System.arraycopy(groomedData, 0, packedData, 0, bytesCopied); return packedData; } 

在commons-codec项目上find的代码。

你试过了吗

 string.trim(); 

这是为了修剪string中所有前导和倾斜的空格。 希望这可以帮助。

编辑:(我不够明确)

所以,当你string.split(),你将有一个string[] – 为数组中的每个string,做一个string.trim(),然后将其附加。

 String[] tokens = yourString.split(" "); StringBuffer buff = new StringBuffer(); for (String token : tokens) { buff.append(token.trim()); } 

使用stringBuffer / Builder而不是追加在同一个string中。

Interesting Posts