/ / String split с период (.) Показва различно поведение [дублиране] - java, string

Струнното разделяне с период (.) Показва различно поведение [duplicate] - java, string

Работих по него String и се опитах с split() за . като:-

String s = "Hi.Hello";
System.out.println(Arrays.toString(s.split(".")));

Горният код извежда [] празен масив. Но ако избягам . като :-

String s = "Hi.Hello";
System.out.println(Arrays.toString(s.split("\.")));

Нейната правилен изход като [Hi, Hello].

Така че искам да знам: -

Защо трябва да избягам . но . обикновено не се счита за бягство String както можем да използваме . директно.

Отговори:

14 за отговор № 1

Най- String.split( String ) Методът приема редовен израз като аргумент. В нормален израз "." означава "всеки символ", така че трябва да избягате от него (чрез добавяне на ""), ако всъщност искате да се раздели с "." а не от "никакъв характер".

Вижте документацията на модел за стартер на регулярните изрази.


4 за отговор № 2

Не можете да го разделите с просто . защото е разделен ()

Splits this string around matches of the given regular expression.

В regex. означава "съответства на всеки символ", така че трябва да го избягате с, вместо защото трябва да избягате от характера!


1 за отговор № 3

Малко допълнение към предишните отговори (които са правилни).

Често е по-добре да се използва StringUtils.split от Apache Commons Lang (Javadoc). Той приема обикновен низ (вместо regex) като аргумент. Също така поведението му е по-интуитивно:

StringUtils.split("a..b.c", ".") = ["a", "b", "c"]

срещу

"a..b.c".split("\.") = ["a", "", "b", "c"]