Работих по него 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"]