java - Java 中的字符串标记化(大文本)

标签 java string tokenize stringtokenizer large-data

我有这么大的文本(读大)。我需要对每个单词进行标记化,对每个非字母进行定界。我使用 StringTokenizer 一次读取一个单词。然而,当我研究如何编写分隔符字符串(“每个非字母”)而不是做类似的事情时:

new StringTokenizer(text, "\" ();,.'[]{}!?:”“…\n\r0123456789 [etc etc]");

我发现基本上每个人都讨厌 StringTokenizer(为什么?)。

那么,我可以用什么代替呢?不要建议 String.split,因为它会复制我的大文本。我需要逐字逐句地浏览文本并在每个非字母上划定界限。是我自己构建一些东西更容易,还是有一些最佳实践方法来解决这个问题?

提前致谢!

最佳答案

StringTokenizer,根据文档 “StringTokenizer 是一个遗留类,尽管不鼓励在新代码中使用它,但出于兼容性原因保留了它。建议任何寻求此功能的人使用 String 的 split 方法或 java .util.regex 包代替。” 这几乎总结了 StringTokenizer 的仇恨。

如果内存确实是个问题,您可以逐个字符地遍历字符串和分隔符之间的子字符串,进行处理,然后继续。

关于java - Java 中的字符串标记化(大文本),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10052882/

相关文章:

java - 如何在 java.applet.Applet 中获取 java.awt.Graphics 的实例?

java - Selenium 基于 Alt 的点击图片链接(含引用)

java - 无法打开包含文件 : 'jni.h' : No such file or directory

string - Lua中将数组中的字符串串联成长字符串

c++ - 我可以使用 memcmp 两个比较多字节字符串吗?

python - 在 python 3 中通过使用算术和逻辑运算符保留某些单词来标记单词?

java - 字符串分词器

java - 如何解决 Junit for spring + mule ESB 项目的 clearCache() 方法的 java.lang.NoSuchMethodError

检查字符串是否改变

java - 如何使用 Lucene 将 LowerCase 应用于字符串