有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

带分隔符的java标记化

我试图将源代码划分为标记,我希望将分隔符\\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) 个答案

  1. # 1 楼答案

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

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

    注意StringTokenizer是一个遗留类,出于兼容性原因保留了它,尽管在新代码中不鼓励使用它。建议任何寻求此功能的人使用String或java的split方法。util。改为正则表达式包Ex:

    String[] result = this.sourceCode.split("\\s+|[;{}\\[\\]]");
    for (String str : result) {
         System.out.println(str);
    }
    
  2. # 2 楼答案

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