Java заменяет специальные символы в строке - PullRequest
1 голос
/ 08 сентября 2011

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

BEGIN\n\n\n\nTHIS IS A STRING\n\nEND

И я хочу удалить все символы новой строки и получить результат как:

BEGIN THIS IS A STRING END

Как мне это сделать?Стандартные функции API не будут работать из-за escape-последовательности в моем опыте.

Ответы [ 7 ]

2 голосов
/ 08 сентября 2011

Попробуйте str.replaceAll("\\\\n", ""); - это называется двойным побегом:)

1 голос
/ 08 сентября 2011

Это работает для меня:

String s = "BEGIN\n\n\n\nTHIS IS A STRING\n\nEND";
String t = s.replaceAll("[\n]+", " ");
System.out.println(t);

Ключ - рег. От

1 голос
/ 08 сентября 2011
String str = "BEGIN\n\n\n\nTHIS IS A STRING\n\nEND;";

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

// Remove extra white spaces
while (str.indexOf("  ") > 0) {
   str = str.replaceAll("  ", " ");
}
1 голос
/ 08 сентября 2011

Простое replace('\n', ' ') приведет к тому, что строка станет:

 BEGIN    THIS IS A STRING  END
      ****                **

где * - пробелы. Если вам нужны пробелы, попробуйте replaceAll("[\r\n]{2,}", " ")

И в случае, если это не разрывы строк, а буквальная "\n" попытка засухи:

replace("\\n", " ")

или

replaceAll("(\\\\n){2,}", " ")
0 голосов
/ 08 сентября 2011

Надеюсь, этот фрагмент поможет,

Scanner sc = new Scanner(new StringReader("BEGIN\n\n\n\nTHIS IS A STRING\n\nEND "));
    String out = "";
    while (sc.hasNext()) {
        out += sc.next() + " ";
    }
    System.out.println(out);
0 голосов
/ 08 сентября 2011

Обычно я не пишу код на Java, но быстрый поиск приводит меня к мысли, что String.trim должен работать для вас.Он говорит, что удаляет начальные и конечные пробелы вместе с \ n \ t и т. Д. *

0 голосов
/ 08 сентября 2011

Конечно, стандартный API будет работать, но вам, возможно, придется удвоить escape ("\\ n").

...