Ответов (10)10
Вы пробовали использовать метод replaceAll для замены любого появления \ n или \ r пустой строкой?
Если вы хотите избежать регулярного выражения или должны нацеливаться на более раннюю JVM, String.replace () сделает:
str=str.replace("\r","").replace("\n","");
И чтобы удалить пару CRLF:
str=str.replace("\r\n","");
Последнее более эффективно, чем создание регулярного выражения для того же. Но я думаю, что первое будет быстрее как регулярное выражение, поскольку строка анализируется только один раз.
Ты пробовал
string.trim();
Это предназначено для обрезки всех ведущих и наклонных пробелов в строке. Надеюсь это поможет.
Изменить: (я не был достаточно явным)
Итак, когда вы используете string.split (), у вас будет строка [] - для каждой строки в массиве выполните string.trim (), а затем добавьте ее.
String[] tokens = yourString.split(" ");
StringBuffer buff = new StringBuffer();
for (String token : tokens)
{
buff.append(token.trim());
}
Используйте stringBuffer / Builder вместо добавления в ту же строку.
Вы можете передать терминатор строки напрямую, например \ n, если вы знаете терминатор строки в Windows, Mac или UNIX. В качестве альтернативы вы можете использовать следующий код для замены разрывов строк в любой из трех основных операционных систем.
str = str.replaceAll("\\r\\n|\\r|\\n", " ");
Вышеупомянутая строка кода заменит разрывы строк пробелом в Mac, Windows и Linux. Также вы можете использовать разделитель строк. Он будет работать для всех ОС. Ниже приведен фрагмент кода для разделителя строк.
String lineSeparator=System.lineSeparator();
String newString=yourString.replace(lineSeparator, "");
Regex с 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", "");
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;
}
Код найден в проекте общих кодеков.