You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

StreamTokenizer遇斜杠停止解析的原因与解决方案

问题原因与解决方法

这问题我之前排查过,核心是StreamTokenizer的默认规则在搞事情!

为什么会只输出第一个单词?

StreamTokenizer默认把斜杠/当作注释起始标记:

  • 当它遇到单个/后,会自动将后续直到行尾的内容判定为注释,直接跳过不解析
  • 所以你输入Hello /this is a string时,解析到/就触发了注释规则,后面的this is a string全被当成注释忽略了,自然只输出Word: Hello

怎么解决?

我们需要手动修改StreamTokenizer的规则,把斜杠从注释符号列表里移除,让它被当作普通字符处理。有两种常用方式:

方式1:关闭所有斜杠相关的注释规则

在创建StreamTokenizer实例后,添加这两行代码:

StreamTokenizer st = new StreamTokenizer(br);
// 关闭双斜杠//注释
st.slashSlashComments(false);
// 关闭斜杠星号/* */注释
st.slashStarComments(false);

方式2:直接将斜杠设为普通字符

如果只需要让单个/不触发注释,也可以直接把它标记为普通字符:

StreamTokenizer st = new StreamTokenizer(br);
// 将/设置为普通字符,不再作为注释起始符
st.ordinaryChar('/');

修改后再解析Hello /this is a string,就能正常输出所有内容了:

Word: Hello
Word: /this
Word: is
Word: a
Word: string

内容的提问来源于stack exchange,提问作者mrfr

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.15 03:41:13