1

配列に余分な要素を返す正規表現を使用して文字列を分割しようとしています。助けてください。以下はプログラムです:

public class Test {
    public static void main(String[] arg){
    String str1 = "{abc}{def}";
    String delim = "[{}]+";

    String[] tokens = str1.split(delim);

    for (int i = 0; i < tokens.length; i++) {
        System.out.println("token value: "+ tokens[i]);
        }        
    }    
}

出力:

token value: 
token value: abc
token value: def

最初のトークンが空の文字列なのはなぜですか? これはどのように修正できますか?

4

3 に答える 3

0

入力の言語/フォーマットに確信がある場合は、次のようにできます。

public class Test {
    public static void main(String[] arg){
    String str1 = "{abc}{def}";

    String[] tokens = str1.split("}");

    for (int i = 0; i < tokens.length; i++) {
        String realToken = tokens[i].substring(1); // This strips off the leading "{"
        System.out.println("token value: " + realToken);
    }
}

元の例で空の文字列トークンが先頭にあるのはなぜですか? これは、文字列が区切り文字で始まるためです。考えてみてください: あなたのケースで最初の要素として空の文字列を返さない場合、文字列が区切り文字で始まる場合とそうでない場合をどのように区別しますか?

于 2013-05-13T07:09:58.363 に答える