Как нормализовать / отшлифовать текст в Java? - PullRequest
1 голос
/ 29 марта 2011

Какой метод вы бы предложили для нормализации текста в Java, например

String raw = "  This is\n  a test\n\r  ";
String txt = normalize(raw);
assert txt == "This is a test";

Я думаю о StringUtils .replace() и .strip() методах, но, возможно, есть более простой способ.

Ответы [ 7 ]

11 голосов
/ 29 марта 2011

Попробуйте следующее, если речь идет только о пробелах

String txt = raw.replaceAll("\\s+", " ").trim();
2 голосов
/ 29 марта 2011

Я вижу, что в строке есть символ перевода строки, от которого вы хотите избавиться. В этом случае я бы порекомендовал использовать регулярное выражение, как так ...

Pattern.compile("\\s+").matcher(text).replaceAll(" ").trim();

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

1 голос
/ 29 марта 2011

зависит немного от того, что именно вы хотите раздеть.Если это определенные символы, то replaceAll () будет тем же, что и @Yaneeve.Если потребности носят более общий характер, вы можете посмотреть на нормализовать строку, используя нормализатор .

0 голосов
/ 10 мая 2018

Apache наконец-то добавил эту функцию: org.apache.commons.lang3.StringUtils.normalizeSpace(String str) // docs

0 голосов
/ 29 марта 2011
private static String normalize(String raw) {
    StringBuilder sb = new StringBuilder();
    Scanner scanner = new Scanner(raw);
    while (scanner.hasNext()) {
        sb.append(scanner.next());
        sb.append(' ');
    }
    sb.deleteCharAt(sb.length() - 1);
    return sb.toString();
}
0 голосов
/ 29 марта 2011

Если нормализация означает замену последовательностей пробелов, табуляции, новых строк и перевода строки, то я бы подумал об использовании простого регулярного выражения и String.split () для создания отдельных слов, а затем добавлял их в StringBuilder с пробелом 'Я хотел бы между ними.Если производительность действительно имеет значение, другой подход будет заключаться в том, чтобы просто зацикливаться на символах строки, просматривая каждый из них и решая, добавлять ли его в StringBuilder или отбрасывать его.

0 голосов
/ 29 марта 2011

Чтобы удалить первые и последние пробелы, которые вы ищете, String # trim ()

http://download.oracle.com/javase/1.4.2/docs/api/java/lang/String.html#trim()

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...