Правильный способ разбить строку на ноль или более слов - PullRequest
0 голосов
/ 21 октября 2011

У меня есть строка с нулем или более слов, разделенных пробелами, которые нужно разбить на массив слов.Это то, что я сделал.Но шаг постобработки, когда я обрабатываю случай, когда входная строка не содержит слов, подсказывает мне, что я должен был использовать другой способ, кроме String.split ().Должен ли я?

String[] split_arguments(String arguments) {
    String[] result = arguments.split("[\t ]+");
    if (result.length == 1 && result[0].equals("")) {
        result = new String[0];
    }
    return result;
}

Ответы [ 4 ]

4 голосов
/ 21 октября 2011

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

String[] split_arguments(String arguments) {
    if(arguments == null) {
        return null;
    }
    String trimmedArguments = arguments.trim();
    if(trimmedArguments.length() == 0) {
        return null;
    }

    return trimmedArguments.split("\\s+");
}
2 голосов
/ 21 октября 2011

Вы можете использовать StringUtils от Apache Commons. Затем вы можете либо использовать один из предоставленных ими методов разбиения, либо, прежде чем проверить, не является ли строка пустой, используя методы isNotEmpty() или isNotBlank().

0 голосов
/ 21 октября 2011

Я предлагаю использовать StrTokenizer от Commons Lang. Это так просто, как:

return StrTokenizer(arguments).getTokentArray();

http://commons.apache.org/lang/api-release/org/apache/commons/lang3/text/StrTokenizer.html

0 голосов
/ 21 октября 2011

Вы можете использовать StringUtils.IsBlank из Apache Commons, чтобы проверить строку перед разбиением.В любом случае вам нужно выполнить проверку, но выполнение проверки перед разбиением может быть более логичным.

...