从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中。