我使用StringTokenizer
如下,并期望它实际上分离每个破解者,但它把所有作为一个标记。我该如何标记它们?
Stack<String> a=new Stack<>();
String S = "{[()()]}";
String temp="";
StringTokenizer str=new StringTokenizer(S);
while (str.hasMoreTokens()){
temp=str.nextToken();
a.push(temp);
}
// write all symbols you want here on st
StringTokenizer st = new StringTokenizer(str, "@!");
String s = "Hello, i am using Stack Overflow;";
System.out.println("s = " + s);
String delims = " ,;";
StringTokenizer tokens = new StringTokenizer(s, delims);
while(tokens.hasMoreTokens())
System.out.println(tokens.nextToken());
如果你试试
StringTokenizer st = new StringTokenizer("[[]{}[[]]()]","[]{}()");
while (st.hasMoreTokens()) {
System.out.println(st.nextToken());
}
它会在对字符串进行标记时返回空,但在对所有括号进行标记后没有其他任何内容。如果您改为尝试:
StringTokenizer st = new StringTokenizer("[[a]{b}[[c]d]()]","[]{}()");
你会得到一个b c d - 标记值。
现在,如果你想在那里留下括号,id推荐lookahead和lookback正则表达式:
StringTokenizer st = new StringTokenizer(z,"[]{}()");
String regEx "(?<=[{}()\\[\\]])|(?=[{}()\\[\\]])";
System.out.println(Arrays.toString(z.split();
将返回:
[[, [, a, ], {, b, }, [, [, c, ], d, ], (, ), ]]