我正在尝试将源代码分隔为令牌,我希望将分隔符\\s|+;,{}[]
标记为令牌。但我有点失败,有什么建议吗?
public void tokenize() {
StringTokenizer st = new StringTokenizer(this.sourceCode, "\\s+|[;{}\\[\\]]", true);
int counter = 0;
while (st.hasMoreElements()) {
String token= (String) st.nextElement();
tokenizedCode.put(counter, token.trim());
counter++;
}
}
编辑:注意:分隔符没有标记化正确的预期
我希望在int a=10;
int,a,=,10
进行标记
答案 0 :(得分:1)
StringTokenizer
类的构造函数不会将正则表达式作为参数,因此您可以这样做:
StringTokenizer st = new StringTokenizer(this.sourceCode, " ;{}[]=", true);
请注意,StringTokenizer
是一个遗留类,出于兼容性原因而保留,但在新代码中不鼓励使用它。建议任何寻求此功能的人都使用String的split方法或java.util.regex包。 Ex:
String[] result = this.sourceCode.split("\\s+|[;{}\\[\\]]");
for (String str : result) {
System.out.println(str);
}
答案 1 :(得分:0)
构造函数的第三个参数使它也返回分隔符。