Java 拆分字符串/令牌
在java中,有没有更好的方法读取文件中的令牌? 我目前正在使用StringTokenizer来拆分令牌。但在大多数情况下,它可能会非常低效,因为您必须逐个令牌地读取令牌Java 拆分字符串/令牌,java,string,tokenize,Java,String,Tokenize,在java中,有没有更好的方法读取文件中的令牌? 我目前正在使用StringTokenizer来拆分令牌。但在大多数情况下,它可能会非常低效,因为您必须逐个令牌地读取令牌 谢谢你我认为这门课最好、最灵活的选择是“的课”。使用它,您可以控制如何拆分字符串,并返回拆分后标记的Iterable。您没有真正指定要执行的具体操作,逐个令牌读取令牌是“低效的”,但是如果您喜欢列表,您可以使用Lists.newArrayList(Iterable)或ImmutableList.copyOf(Iterable)
谢谢你我认为这门课最好、最灵活的选择是“的课”。使用它,您可以控制如何拆分字符串,并返回拆分后标记的
Iterable
。您没有真正指定要执行的具体操作,逐个令牌读取令牌是“低效的”,但是如果您喜欢列表
,您可以使用Lists.newArrayList(Iterable)
或ImmutableList.copyOf(Iterable)将Iterable
转换为列表
您需要添加更多详细信息,但简单的案例非常有效。如果您查看Java API,您会注意到它推荐了一种替代方案:
StringTokenizer
是一个遗留类
出于兼容性原因保留
尽管在纽约不鼓励使用它
代码。建议任何人
使用
String的split
方法或
java.util.regex
package
如果这两个选项都不适合您的需要,您应该看看,它也支持模式匹配:
Scanner scanner= new Scanner(new File("example.txt"));
while (scanner.hasNextLine()) {
// do some stuff
}
我喜欢Apache的Jakarta类中的StringUtils.split()。它允许您编写如下代码:
String[] splitStrings = StringUtils.split(unsplitString, "|");
让我们避免使用正则表达式,它处理空指针。“在大多数情况下效率很低,因为您必须逐个令牌地读取令牌”,那么您还想怎么做呢?我的意思是,除了扫描整个输入字符串/流之外,您还打算如何“发现”您的令牌?这看起来不错,我喜欢+1