1
public static void main(String[] args){
    String testStr = "Test test. Test 2. Test3?";
    String[] newStr = testStr.split(".?");
    System.out.print(newStr[0]);
}

これを実行すると、Array Index Out of Bounds例外が発生し、newStrの長さは0です。文を「。」のトークンに分割したいと思います。と "?"。私はどのようなエラーを犯していますか?

4

3 に答える 3

4

それらの文字をエスケープする必要があります。とを使用"\\.""\\?"ます。これはString#split、正規表現を受け取り、両方の文字が正規表現の特殊文字であるためです。

于 2012-10-17T06:09:23.667 に答える
4

あなたは脱出する必要が.あり?ます。使用する :

String[] newStr = testStr.split("\\.|\\?");
于 2012-10-17T06:09:59.080 に答える
4

String#split分割するパラメータとして正規表現を取ります。正規表現では特別な意味があります.?

文字クラスを使用して、次のいずれかで分割できます。

testStr.split("[.?]");

特殊文字は文字クラス内で意味を失うため、文字クラス内ではそれらをエスケープする必要はありません。

通常のパイプ|で使用する場合は、エスケープする必要があります:-

testStr.split("\\.|\\?");

更新:-区切り文字を保持したい場合:

testStr.split("(?<=[.?])")
于 2012-10-17T06:09:59.517 に答える