使用分隔符进行标记

时间:2013-10-28 09:27:20

标签: java regex tokenize delimiter

我正在尝试将源代码分隔为令牌,我希望将分隔符\\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进行标记

2 个答案:

答案 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)

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