比如说我有一个字符串,其中包含以下内容" 3 * x +(b [3] + c)+ x"
我的分隔符是" \ T * + - /()[]"
当我使用字符串标记生成器来分割字符串并且我得到令牌&#34; b&#34;时,我如何检查以确保下一个分隔符是&#34; [&#34;。< / p>
我需要这样做,以便令牌&#34; x&#34;与token&#34; b&#34;不同,因为标记x表示一个简单变量,标记b表示我正在尝试构建的程序中的数组。
我正在尝试用Java编写这段代码。
答案 0 :(得分:0)
使用字符串标记生成器时,如果标记是分隔符,如何检查标记之后的下一个字符?
如果对StringTokenizer
使用3 argument constructor,则第三个参数表示分隔符是否作为标记返回。
然而 1 ,这仍然会让你遇到处理空白的尴尬问题。例如&#34; 1 + 1&#34;给你3个代币,但是&#34; 1 + 1&#34;给你5个代币。你要么:
1 - 我倾向于同意@EJP StringTokenizer
是这项工作的错误工具。你可以让它发挥作用,但IMO你不应该这样做。 (除非你明确指示这样做。)
2 - 更好的方法可能是StreamTokenizer
,String.split
(使用涉及前瞻或后瞻的狡猾的正则表达式),使用ANTLR,javacc或其他一些解析器生成器生成的标记生成器,或者..一个手工构建的标记器。