拆分文本时遇到问题

Moo*_*ors 5 java split

这是我正在使用的代码:

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)

编译完美,但在运行时没有任何反应.我究竟做错了什么?

pol*_*nts 7

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)

参考

相关问题


Jea*_*ana 5

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)