2011-12-28 2 views

ответ

5

java.lang.String.split();
Использование: Массив, возвращаемый этим методом, содержит каждую подстроку этой строки, которая заканчивается другой подстрокой, которая соответствует данному выражению или заканчивается концом строки. Подстроки в массиве находятся в том порядке, в котором они встречаются в этой строке. Если выражение не соответствует какой-либо части ввода, то результирующий массив имеет только один элемент, а именно эту строку.

org.apache.commons.lang.StringUtils.splitPreserveAllTokens();
Использование: расколы предоставленный текст в массив, указанный разделитель, сохраняя все маркеры, в том числе пустых маркеров созданных смежных сепараторов. Это альтернатива использованию StringTokenizer.

Подробнее: kickjava_src_apache_StringUtils

и String.split() использует конечный класс Pattern расколоть.

Pattern.compile(regex).split(this , limit); 

в StringUtils использует splitWorker(String str, char separatorChar, boolean preserveAllTokens), это собственный метод, который мелодию Performance для 2.0 (JDK1.4).

+0

Не делится ли пустые жетоны? –

+0

вы можете найти ответ на этот вопрос [Вопрос] (http://stackoverflow.com/questions/225337/how-do-i-split-a-string-with-any-whitespace-chars-as-delimiters) –

+0

Спасибо Азаду. Я использую запятую как разделитель, поэтому я думаю, здесь не должно быть никаких проблем с String.split(). Но я бы потерял улучшение производительности, предоставляемое StringUtils splitworker, и мне пришлось бы обрабатывать null самостоятельно. –

2
I found folowing difference between String.split and splitByWholeSeparatorPreserveAllTokens 
  • splitByWholeSeparatorPreserveAllTokens обрабатывает нулевые значения, где String.split() не
  • В splitByWholeSeparatorPreserveAllTokensAdjacent сепараторов рассматриваются как разделители для пустых токенов.