Java 在拆分文本时遇到问题

Java 在拆分文本时遇到问题,java,split,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); } } } 编

以下是我使用的代码:

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);
    }
}
}

编译非常完美,但在运行时不会发生任何事情。我做错了什么?

试试看

String [] result = x.split("\\.");

拆分接受一个字符,而不是要拆分的字符。“.”在模式中被特殊处理。

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());
    }
}
给出:

I lost my Phone
I shouldn't drive home alone

如果不想使用正则表达式,可以使用guava lib的拆分器

此外,结果是一个Iterable,而不是采用正则表达式模式的数组。恰好正则表达式中的
是一个元字符,它(几乎)匹配任何字符,因此
拆分(“.”
的工作方式与您期望的不一样

您可以通过在
前面加反斜杠来转义它。作为Java字符串文本,这是
“\\。”
。由于
\
本身是一个Java转义字符,因此
\
的长度加倍
“\\”
是长度为2的
字符串,包含反斜杠和句点

如果给你一个任意的
字符串
,你可以使用。它将创建一个模式,使其与给定的
字符串
完全匹配

另见

这仅用于教育目的:

    String text =
        "Wait a minute... what?!? Oh yeah! This is awesome!!";

    for (String part : text.split("(?<=[.?!]) ")) {
        System.out.println(part);
    }
工具书类
相关问题

“编译非常完美,但在运行时不会发生任何事情。”-这可能会让你心碎,但仅仅因为它可以编译,并不意味着它可以工作。哦,不。。请告诉我你在开玩笑电脑(几乎)总是完全按照你告诉他的去做。。。不一定是你想要他做的…“\\”是一个长度为2的字符串,包含一个反斜杠和一个句点。“嗯..”。。我不明白。有人能重新解释吗?@MoonStruckHorrors:A
String s=“\n”包含一个字符,换行符<代码>“\t”
包含一个选项卡<代码>“\\”
包含反斜杠<代码>“\”包含双引号。这称为转义序列。因此,由于
“\\”
包含反斜杠,
“\\。”
包含反斜杠和句点。您可以打印出来并检查其
长度()
确认。另请参见。但这不意味着它将在
\
处拆分字符串,而不是
?@moonstroked:regular expression模式
\.
匹配一个文本句点。正则表达式模式
匹配(几乎)任何字符。因此模式
a.b
匹配
之类的字符串axb“
”a!b“
等。模式
a\.b
仅与
“a.b”
匹配。
    String text =
        "Wait a minute... what?!? Oh yeah! This is awesome!!";

    for (String part : text.split("(?<=[.?!]) ")) {
        System.out.println(part);
    }
Wait a minute...
what?!?
Oh yeah!
This is awesome!!