Javaの分割は()を正確にどのように動作しますか?

Zichen馬:

使用して、なぜsplit()Javaでは動作が異なりますか?私が使用している場合は,,空の配列を取得します:私はこのように行う場合は1.2.3.4:私はこのようなバージョン文字列を分割したいsplit("\\.")、私は期待どおりに動作します:

        String version1 = "1.2.3.4.5";
        String version2 = "1.2.3.4.5.6";
        String[] v1Arr = version1.split("."); 
        String[] v2Arr = version2.split("\\."); 
        System.out.println(Arrays.toString(v1Arr)); // [] why?
        System.out.println(Arrays.toString(v2Arr)); // [1, 2, 3, 4, 5, 6]


String version1 = "1-2-3-4-5";
String version2 = "1-2-3-4-5-6";
String[] v1Arr = version1.split("-");
String[] v2Arr = version2.split("\\-");

System.out.println(Arrays.toString(v1Arr)); // [1, 2, 3, 4, 5]
System.out.println(Arrays.toString(v2Arr)); // [1, 2, 3, 4, 5, 6]

私は変更する場合は「」「 - 」予想通り、両方の仕事、これはなぜ起こるのでしょうか?前もって感謝します!

エリオットの新鮮:

.正規表現の中でトークン特殊なパターンです。これは、任意の1つの文字に一致します。あなたが可能なすべての文字に分割すると(左は何もありませんので)あなたは空の配列を取得します。これとは対照的に、あなたは脱出するとき.\\.トークンリテラルとしてレンダリングされ(とのみリテラルと一致します.)。

おすすめ

転載: http://43.154.161.224:23101/article/api/json?id=222007&siteId=1