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=10要在int,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中标记;在预期结果中不存在