这是我正在使用的代码:
public class splitText {
public static void main(String[] args) {
String x = "I lost my Phone. I shouldn't drive home alone";
String[] result = x.split(".");
for (String i : result) {
System.out.println(i);
}
}
}
Run Code Online (Sandbox Code Playgroud)
编译完美,但在运行时没有任何反应.我究竟做错了什么?
String.split(String regex)采用正则表达式模式.恰好.在正则表达式中,一个元字符匹配(几乎)任何字符,因此为什么split(".")不能按预期方式工作.
您可以.使用反斜杠转义它.作为Java字符串文字,这是"\\.".\由于\它本身是一个Java转义字符,因此加倍."\\."是一个String长度为2的,含有一个反斜线和的期间.
如果给你一个任意的String字面匹配(或者如果你不想自己逃避它们),你可以使用Pattern.quote.它会使一个模式与字面上匹配给定的String.
这仅用于教育目的:
String text =
"Wait a minute... what?!? Oh yeah! This is awesome!!";
for (String part : text.split("(?<=[.?!]) ")) {
System.out.println(part);
}
Run Code Online (Sandbox Code Playgroud)
这打印:
Wait a minute...
what?!?
Oh yeah!
This is awesome!!
Run Code Online (Sandbox Code Playgroud)
String.split使用正则表达式,因此点(.)表示"任何东西".你需要逃脱点
public static void main(String[] args) {
String x = "I lost my Phone. I shouldn't drive home alone";
String[] result = x.split("\\.");
for (String i : result) {
System.out.println(i.trim());
}
}
Run Code Online (Sandbox Code Playgroud)
给出:
I lost my Phone
I shouldn't drive home alone
Run Code Online (Sandbox Code Playgroud)