有没有更好的方法在java中的文件中读取令牌? 我目前正在使用StringTokenizer来分割令牌。但是在大多数情况下它可能效率很低,因为你必须通过令牌读取令牌。
谢谢
答案 0 :(得分:4)
我喜欢Apache的Jakarta类中的StringUtils.split()。它允许你编写这样的代码:
String[] splitStrings = StringUtils.split(unsplitString, "|");
让我们避免正则表达式,它处理空指针。
答案 1 :(得分:3)
如果你在Java API中查看StringTokenizer
,你会注意到它推荐了另一种选择:
StringTokenizer
是一个遗留类 因兼容性原因而保留 虽然在新的情况下不鼓励使用它 码。任何人都可以推荐 寻求此功能使用split
或String
的{{1}}方法 而是java.util.regex
包。
如果这些选项都不符合您的需求,您应该查看Scanner
,它也支持模式匹配:
Scanner scanner= new Scanner(new File("example.txt"));
while (scanner.hasNextLine()) {
// do some stuff
}
答案 2 :(得分:2)
我认为最好和最灵活的选项是Guava的Splitter课程。通过它,您可以很好地控制分割字符串的方式,并返回由分割产生的Iterable<String>
个标记。您没有真正指定您想要做什么,因为令牌的读取令牌“低效”,但如果您更喜欢List
,则可以转换Iterable
使用Lists.newArrayList(Iterable)
或ImmutableList.copyOf(Iterable)
列出的列表。
答案 3 :(得分:1)
您需要添加更多详细信息,但简单的情况split效果很好。