0

我正在尝试将源代码分隔为我希望分隔符\\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

4

2 回答 2

1

该类的构造函数StringTokenizer不采用正则表达式作为参数,因此您可以这样做:

StringTokenizer st = new StringTokenizer(this.sourceCode, " ;{}[]=", true);

请注意,StringTokenizer这是出于兼容性原因而保留的遗留类,尽管不鼓励在新代码中使用它。建议任何寻求此功能的人改用 String 的 split 方法或 java.util.regex 包。前任:

String[] result = this.sourceCode.split("\\s+|[;{}\\[\\]]");
for (String str : result) {
     System.out.println(str);
}
于 2013-10-28T09:58:45.610 回答
0

构造函数的第三个参数使它也返回分隔符。

于 2013-10-28T09:43:42.513 回答