У меня есть строка, подобная этой
"hello
java
book"
Я хочу удалить \r и\n из строки (hello\r\njava\r\nbook). Я хочу, чтобы строка была "hellojavabook". Как я могу это сделать?
У меня есть строка, подобная этой
"hello
java
book"
Я хочу удалить \r и\n из строки (hello\r\njava\r\nbook). Я хочу, чтобы строка была "hellojavabook". Как я могу это сделать?
Regex with 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", "");
Если вы хотите избежать регулярного выражения или должны быть нацелены на более раннюю JVM, String.replace() будет делать:
str=str.replace("\r","").replace("\n","");
И удалить пару CRLF:
str=str.replace("\r\n","");
Последнее более эффективно, чем создание регулярного выражения, чтобы сделать то же самое. Но я думаю, что первое будет быстрее, как регулярное выражение, так как строка только раз анализируется.
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);
}
Было бы полезно добавить табуляцию в regex тоже.
Для строки String:
str = str.replaceAll("\\\\r","")
str = str.replaceAll("\\\\n","")
Вы пытались использовать метод replaceAll для замены любого появления \n или\r на пустую строку?
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.
Вы пробовали
string.trim();
Это предназначено для обрезания всех ведущих и наклонных пробелов в строке. Надеюсь, это поможет.
Изменить: (я не был достаточно явным)
Итак, когда вы string.split(), у вас будет строка [] - для каждой из строк в массиве, выполните string.trim(), а затем добавьте ее.
String[] tokens = yourString.split(" ");
StringBuffer buff = new StringBuffer();
for (String token : tokens)
{
buff.append(token.trim());
}
Используйте stringBuffer/Builder вместо добавления в одну строку.