Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/344.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/string/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 拆分字符串/令牌_Java_String_Tokenize - Fatal编程技术网

Java 拆分字符串/令牌

Java 拆分字符串/令牌,java,string,tokenize,Java,String,Tokenize,在java中,有没有更好的方法读取文件中的令牌? 我目前正在使用StringTokenizer来拆分令牌。但在大多数情况下,它可能会非常低效,因为您必须逐个令牌地读取令牌 谢谢你我认为这门课最好、最灵活的选择是“的课”。使用它,您可以控制如何拆分字符串,并返回拆分后标记的Iterable。您没有真正指定要执行的具体操作,逐个令牌读取令牌是“低效的”,但是如果您喜欢列表,您可以使用Lists.newArrayList(Iterable)或ImmutableList.copyOf(Iterable)

在java中,有没有更好的方法读取文件中的令牌? 我目前正在使用StringTokenizer来拆分令牌。但在大多数情况下,它可能会非常低效,因为您必须逐个令牌地读取令牌


谢谢你

我认为这门课最好、最灵活的选择是“的课”。使用它,您可以控制如何拆分字符串,并返回拆分后标记的
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