解析如何将输入字符串解析为单个标记?(爪哇)
我试图将一个表达式字符串解析为单独的令牌单元,并将其放入数组列表中。所以基本上,我得到了这样一个表达:
(3 + 5)
一旦完成解析,它在数组列表中应该是这样的:
"(", "3", "+", "5", ")"
在这种情况下,应该忽略空白。此外,如果表达式包含“++”或“-”之类的运算符,则它们应存储为一个标记,而不是两个。例如,(++3)将变成“(”、“++”、“3”、”)
我不确定我的方法是否正确,但我的想法是使用for循环遍历每个字符,看看是否匹配
更新:
for(int i=0; i<expressionString.length(); i++) {
//cast char into ascii int
int ascii = (int) charAt(i);
//appending to token if one of operator symbols
if( ascii >= 40 && ascii <= 47 || ascii == 91 || ascii == 93){
token.append((char) ascii);
//appending to token if it's a num
} else if ( ascii >= 48 || ascii <=57) {
token.append((char) ascii);
//check if next char is a num, if so, append to token
while ((int) charAt(i+1) >= 48 || (int) charAt(i+1) <=57) {
//increment i in for loop to check
i++;
token.append((int) charAt(i));
}
}
//
}
共 (0) 个答案