【发布时间】:2023-04-11 03:10:01
【问题描述】:
我相信我没有正确使用 String Tokenizer。这是我的代码:
buffer = new byte[(int) (end - begin)];
fin.seek(begin);
fin.read(buffer, 0, (int) (end - begin));
StringTokenizer strk = new StringTokenizer(new String(buffer),
DELIMS,true);
如您所见,我正在从文件中读取一大段行(end 和 begin 是行号),并且我正在将数据传输到字符串标记器。我的分隔符是:
DELIMS = "\r\n ";
因为我想分隔它们之间有空格或位于下一行的单词。 但是,此代码有时也会分隔整个单词。能有什么解释??我的 DELIMS 字符串是不是设计错了?
另外,我将“true”作为参数传递给标记器,因为我希望分隔符也被视为标记。(我想要这个是因为我想计算我当前所在的行)
你能帮帮我吗?非常感谢。
【问题讨论】:
-
这个动作是循环执行的吗?
-
请停止使用 StringTokenizer:“StringTokenizer 是一个遗留类,出于兼容性原因,尽管在新代码中不鼓励使用它。建议任何寻求此功能的人使用 String 的 split 方法或改用 java.util.regex 包。”:docs.oracle.com/javase/6/docs/api/java/util/…
-
这个动作被多个线程使用,以复制工作者的形式
-
有没有人可以帮助我处理我正在使用的代码和我正在尝试实现的字符串标记器?
-
@biggdman - 我们三个人已经提议使用 Scanner 代替 - 这应该可以消除您在使用 StringTokenizer 时遇到的问题(Java 自己的文档不鼓励使用它),请详细说明为什么扫描仪不适合你。如果我们能更好地了解您要查找的原因和内容,那么您应该会得到一些更好的答案。
标签: java string file stringtokenizer