Я працював над 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 за відповідь № 1The String.split( String )
метод приймає регулярний вираз як аргумент. У регулярному виразі "." означає "будь-який символ", тому вам доведеться уникати його (додавши "\"), якщо ви насправді хочете розділити на ". а не "будь-яким персонажем".
Дивіться документацію api від Візерунок для початку для регулярних виразів.
4 для відповіді № 2
Ви не можете розділити його просто .
тому що split ()
Splits this string around matches of the given regular expression.
У регексе. означає "відповідати будь-якому символу", тому вам доведеться уникати його з \ замість того, що ви також повинні уникати символу!
1 для відповіді № 3
Невелике доповнення до попередніх відповідей (які є правильними).
Часто краще використовувати StringUtils.split
від Apache Commons Lang (javadoc). В якості аргументу він бере звичайну рядок (замість регулярного вираження). Також її поведінка більш інтуїтивно зрозуміла:
StringUtils.split("a..b.c", ".") = ["a", "b", "c"]
проти
"a..b.c".split("\.") = ["a", "", "b", "c"]