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つの文字に一致します。あなたが可能なすべての文字に分割すると(左は何もありませんので)あなたは空の配列を取得します。これとは対照的に、あなたは脱出するとき.
に\\.
トークンリテラルとしてレンダリングされ(とのみリテラルと一致します.
)。