开发者

Splitting strings/tokens

Is there a better way to read tokens in a file in java? I am currently 开发者_运维百科using StringTokenizer for splitting the tokens. But it can be quite inefficient in most cases as you have to read token by token.

Thank you


I like the StringUtils.split() in Apache's Jakarta classes. It lets you write code like this:

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

Let's you avoid regex, and it deals with null pointers.


If you look at StringTokenizer in the Java API you will notice that it recommends an alternative:

StringTokenizer is a legacy class that is retained for compatibility reasons although its use is discouraged in new code. It is recommended that anyone seeking this functionality use the split method of String or the java.util.regex package instead.

If neither of these options suit your needs, you should take a look at Scanner, which also supports pattern matching:

  Scanner scanner= new Scanner(new File("example.txt"));
  while (scanner.hasNextLine()) {
      // do some stuff
  }


I think the best and most flexible option for this is Guava's Splitter class. With it, you have a lot of control over how you split a string, and it returns an Iterable<String> of the tokens resulting from a split. You didn't really specify what exactly it is you want to do for which reading token by token is "inefficient", but if you'd prefer a List for example, you could just convert the Iterable to a list using Lists.newArrayList(Iterable) or ImmutableList.copyOf(Iterable).


You need to add more details, but is simple cases split works quite well.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜