分割字符串/标记

发布于 2024-09-15 16:11:14 字数 105 浏览 3 评论 0 原文

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

谢谢

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

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

-残月青衣踏尘吟 2024-09-22 16:11:14

我喜欢 Apache 的 Jakarta 类中的 StringUtils.split() 。它允许您编写如下代码:

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

让您避免使用正则表达式,并且它处理空指针。

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.

妄断弥空 2024-09-22 16:11:14

如果您查看 StringTokenizer 在 Java API 中,您会注意到它推荐了一种替代方案:

StringTokenizer 是一个遗留类,
出于兼容性原因保留
尽管在新版本中不鼓励使用它
代码。建议任何人
寻求此功能使用
Stringsplit 方法或
改为 java.util.regex 包。

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

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

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
  }
记忆で 2024-09-22 16:11:14

我认为最好、最灵活的选择是 GuavaSplitter 类。有了它,您可以很好地控制如何拆分字符串,并且它会返回拆分结果的 Iterable 标记。您并没有真正指定您到底想要做什么,因为逐个令牌读取令牌是“低效的”,但是如果您更喜欢 List 例如,您可以将 Lists.newArrayList(Iterable) 或 ImmutableList.copyOf(Iterable) 将 >Iterable 转换为列表。

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).

诗酒趁年少 2024-09-22 16:11:14

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

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

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文