Подтвердить что ты не робот

Удаление символов строки строки из строки Java

У меня есть строка, подобная этой

"hello
java
book"

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

4b9b3361

Ответ 1

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", "");

Ответ 2

Если вы хотите избежать регулярного выражения или должны быть нацелены на более раннюю JVM, String.replace() будет делать:

str=str.replace("\r","").replace("\n","");

И удалить пару CRLF:

str=str.replace("\r\n","");

Последнее более эффективно, чем создание регулярного выражения, чтобы сделать то же самое. Но я думаю, что первое будет быстрее, как регулярное выражение, так как строка только раз анализируется.

Ответ 3

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 тоже.

Ответ 4

Для строки String:

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

Ответ 5

Вы пытались использовать метод replaceAll для замены любого появления \n или\r на пустую строку?

Ответ 6

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.

Ответ 7

Вы пробовали

string.trim(); 

Это предназначено для обрезания всех ведущих и наклонных пробелов в строке. Надеюсь, это поможет.

Изменить: (я не был достаточно явным)

Итак, когда вы string.split(), у вас будет строка [] - для каждой из строк в массиве, выполните string.trim(), а затем добавьте ее.

String[] tokens = yourString.split(" ");
StringBuffer buff = new StringBuffer();
for (String token : tokens)
{
  buff.append(token.trim());
}

Используйте stringBuffer/Builder вместо добавления в одну строку.