Расщепление строк / токенов - PullRequest
0 голосов
/ 18 августа 2010

Есть ли лучший способ прочитать токены в файле в Java? В настоящее время я использую StringTokenizer для разделения токенов. Но это может быть довольно неэффективно в большинстве случаев, так как вы должны читать токен токеном.

Спасибо

Ответы [ 4 ]

4 голосов
/ 19 августа 2010

Мне нравится StringUtils.split () в классах Apache's Jakarta.Это позволяет вам написать код, подобный этому:

String[] splitStrings = StringUtils.split(unsplitString, "|");

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

3 голосов
/ 18 августа 2010

Если вы посмотрите на StringTokenizer в Java API, вы заметите, что он рекомендует альтернативу:

StringTokenizer - это устаревший класс, который сохраняется для совместимостипричины, хотя его использование не рекомендуется в новом коде.Всем, кто ищет эту функцию, рекомендуется использовать метод split из String или пакет java.util.regex.

Если ни один из этих вариантов не соответствует вашим потребностям, вам следует обратить внимание наScanner, который также поддерживает сопоставление с образцом:

  Scanner scanner= new Scanner(new File("example.txt"));
  while (scanner.hasNextLine()) {
      // do some stuff
  }
2 голосов
/ 18 августа 2010

Я думаю, что лучшим и наиболее гибким вариантом для этого является класс Гуава Splitter .С его помощью у вас есть большой контроль над тем, как вы разделяете строку, и он возвращает Iterable<String> токенов, полученных в результате разделения.Вы на самом деле не указали, что именно вы хотите сделать, для чего чтение токена токеном является «неэффективным», но если вы предпочитаете, например, List, вы можете просто преобразовать Iterable в список, используяLists.newArrayList(Iterable) или ImmutableList.copyOf(Iterable).

1 голос
/ 18 августа 2010

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

...