Java 用分隔符标记

Java 用分隔符标记,java,regex,tokenize,delimiter,Java,Regex,Tokenize,Delimiter,我正在尝试将源代码分隔为标记,其中我希望分隔符为\\s |+;,{}[]将被标记化。但我不知怎么搞砸了,有什么建议吗 public void tokenize() { StringTokenizer st = new StringTokenizer(this.sourceCode, "\\s+|[;{}\\[\\]]", true); int counter = 0; while (st.hasMoreElements()) {

我正在尝试将源代码分隔为标记,其中我希望分隔符为
\\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++;
        }
}
编辑:注意:该分隔符不能标记我所期望的内容


我想要
inta=10int,a,=,10中标记的code>构造函数的第三个参数使其也返回分隔符。

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);
}

嗯,你在哪里失败?什么不起作用?如果分隔符不起作用,我强调了这一点,您认为如何?对于您提供的新示例,您可以使用。注意,标记化源代码是一项困难的任务,我的意思是如果我有
=
字符串,如
System.out.print(“这是一个等号=。没有什么特别”)帮助了一点,ty:D我确实意识到,但是它应该在某个时候成为一个迷你编译器,同时需要修复这部分:sI确实需要保留分隔符:sI想要int a=10;在int,a,=,10中标记;在预期结果中不存在