Java 使用字符串标记器时,如何检查标记后的下一个字符(如果它是分隔符)?

Java 使用字符串标记器时,如何检查标记后的下一个字符(如果它是分隔符)?,java,string,delimiter,stringtokenizer,Java,String,Delimiter,Stringtokenizer,例如,我有一个字符串,它是下面的3*x+b[3]+c+x 我的分隔符是\t*+-/[] 当我使用字符串标记器拆分字符串并到达标记b时,如何检查以确保下一个分隔符为[ 我需要这样做,以便令牌x不同于令牌b,因为令牌x代表一个简单变量,令牌b代表我试图构造的程序中的一个数组 我正试图用Java编写这段代码 使用字符串标记器时,如何检查标记后的下一个字符(如果它是分隔符) 如果使用for StringTokenizer,则第3个参数表示分隔符是否作为标记返回 但是,这仍然会给您带来处理空白的棘手问题。

例如,我有一个字符串,它是下面的3*x+b[3]+c+x

我的分隔符是\t*+-/[]

当我使用字符串标记器拆分字符串并到达标记b时,如何检查以确保下一个分隔符为[

我需要这样做,以便令牌x不同于令牌b,因为令牌x代表一个简单变量,令牌b代表我试图构造的程序中的一个数组


我正试图用Java编写这段代码

使用字符串标记器时,如何检查标记后的下一个字符(如果它是分隔符)

如果使用for StringTokenizer,则第3个参数表示分隔符是否作为标记返回

但是,这仍然会给您带来处理空白的棘手问题。例如,1+1给您3个标记,但1+1给您5个标记。您需要:

选择更好的方法2标记输入, 在开始分析之前过滤掉所有空白标记,或者 在标记输入字符串之前,请删除其中的任何空白。 1-我倾向于同意@EJP的观点,即StringTokenizer是这项工作的错误工具。你可以让它工作,但我认为你不应该。除非明确指示你这样做


2-更好的方法可能是StreamTokenizer、String.split和包含lookaheads或lookbehinds的狡猾正则表达式、使用ANTLR、javacc或其他解析器生成器生成的标记器,或者…手工构建的标记器。

你不能。如果你的字符有意义,你不应该使用它作为分隔符进行拆分。表达式是什么语言?我是trying要用Java编写此代码,为什么不使用简单的字符串处理?它是tokenzer还是nothing?你的程序不需要你。也许你的赋值要求需要你…但那是另一回事。或者换句话说,如果你的程序需要它,那么就更改程序!