Удалить символы конца строки из строки Java

У меня есть такая строка

"hello
java
book"

Я хочу убрать \r и \n кончить String(hello\r\njava\r\nbook) . Хочу, чтобы результат был "hellojavabook" . Как я могу это сделать?

Ответов (10)

Учитывая String str:

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

Вы пробовали использовать метод 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 вместо добавления в ту же строку.

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);
}

Было бы полезно добавить табуляцию и в регулярное выражение.

Вы можете передать терминатор строки напрямую, например \ n, если вы знаете терминатор строки в Windows, Mac или UNIX. В качестве альтернативы вы можете использовать следующий код для замены разрывов строк в любой из трех основных операционных систем.

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

Вышеупомянутая строка кода заменит разрывы строк пробелом в Mac, Windows и Linux. Также вы можете использовать разделитель строк. Он будет работать для всех ОС. Ниже приведен фрагмент кода для разделителя строк.

String lineSeparator=System.lineSeparator();
String newString=yourString.replace(lineSeparator, "");

Вы можете использовать unescapeJava с , org.apache.commons.text.StringEscapeUtils как показано ниже

str = "hello\r\njava\r\nbook";
StringEscapeUtils.unescapeJava(str);

Эй, мы также можем использовать это решение для регулярных выражений.

String chomp = StringUtils.normalizeSpace(sentence.replaceAll("[\\r\\n]"," "));

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;
}

Код найден в проекте общих кодеков.