如何标记括号?

问题描述 投票:0回答:2

我使用StringTokenizer如下,并期望它实际上分离每个破解者,但它把所有作为一个标记。我该如何标记它们?

    Stack<String> a=new Stack<>();
    String S = "{[()()]}";
    String temp="";
    StringTokenizer str=new StringTokenizer(S);
    while (str.hasMoreTokens()){
        temp=str.nextToken();
        a.push(temp);
    }
java string stack stringtokenizer
2个回答
1
投票
// 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());

-1
投票

如果你试试

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, ], (, ), ]]
© www.soinside.com 2019 - 2024. All rights reserved.