拆分字符串/令牌

时间:2010-08-18 19:25:44

标签: java string tokenize

有没有更好的方法在java中的文件中读取令牌? 我目前正在使用StringTokenizer来分割令牌。但是在大多数情况下它可能效率很低,因为你必须通过令牌读取令牌。

谢谢

4 个答案:

答案 0 :(得分:4)

我喜欢Apache的Jakarta类中的StringUtils.split()。它允许你编写这样的代码:

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

让我们避免正则表达式,它处理空指针。

答案 1 :(得分:3)

如果你在Java API中查看StringTokenizer,你会注意到它推荐了另一种选择:

  

StringTokenizer是一个遗留类   因兼容性原因而保留   虽然在新的情况下不鼓励使用它   码。任何人都可以推荐   寻求此功能使用   splitString的{​​{1}}方法   而是java.util.regex包。

如果这些选项都不符合您的需求,您应该查看Scanner,它也支持模式匹配:

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

答案 2 :(得分:2)

我认为最好和最灵活的选项是GuavaSplitter课程。通过它,您可以很好地控制分割字符串的方式,并返回由分割产生的Iterable<String>个标记。您没有真正指定您想要做什么,因为令牌的读取令牌“低效”,但如果您更喜欢List,则可以转换Iterable使用Lists.newArrayList(Iterable)ImmutableList.copyOf(Iterable)列出的列表。

答案 3 :(得分:1)

您需要添加更多详细信息,但简单的情况split效果很好。