Как получить произвольный доступ к n-му элементу в StringTokenizer - PullRequest
2 голосов
/ 15 ноября 2011

Есть ли в любом случае прямой доступ к определенному (скажем, 20-му) элементу в stringTokenizer.Время от времени мне нужен только определенный элемент из этого и не нужны другие, но я должен пройти через все элементы.

РЕДАКТИРОВАТЬ : Я также хочу игнорировать пустые элементы.1005 *

Я что-то упустил?

Ответы [ 3 ]

5 голосов
/ 15 ноября 2011

Вы можете использовать String.split для этого вместо Tokenizer.

Например:

String[] split = "you string is splitting".split(" ");
split[2];  // random access to the 3rd element of split    

Конечно, перед тем, как получить доступ к своему субиндексу, вам нужно проверить, действительно ли в вашем split столько элементов.

3 голосов
/ 15 ноября 2011

Вы можете попробовать класс StringUtils от Apache Commons Lang, который может разбивать строку, игнорируя пустые элементы и обрабатывая для вас строки null.

Токенайзер должен будет хотя бы прочитатьn токенов, чтобы определить, какой из них n-й.Таким образом, может быть проще просто создать массив строк, используя String#split() или StringUtils.split(...).

Обратите внимание, что я бы предпочел StringUtils.split(...), поскольку он не возвращает пустые элементы, если я не хочу ихто есть StringUtils.split(",a,b,c;;d,e,,f",";,"); вернет ["a","b","c","d","e","f"], тогда как String#split() вернет ["","a","b","c","","d","e","","f"]

0 голосов
/ 15 ноября 2011

Tokenizer предназначен для последовательного доступа к элементам (вроде как LinkedList). Вы должны просмотреть все токены и сохранить их в какой-либо коллекции с произвольным доступом (ArrayList) или использовать другой метод для разделения вашей исходной строки / потока.

...