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