Java.split不';我不能很好地使用toLowerCase

Java.split不';我不能很好地使用toLowerCase,java,split,Java,Split,我想拆分一个文本。我可以在使用String.split()时执行此操作。例如,我拆分了“Hello world”,得到“Hello”和“world”作为输出。 当我使用toLowerCase做同样的操作时,我会得到“hello”和“world”。但我不想在“world”后面加上这个点。 我尝试使用不同的参数进行拆分,并将toLowerCase与.split分开放置。我试着先拆分,然后toLowerCase。什么都不管用。我该怎么做才能淡出这一切呢?等 以下是我的拆分方式: predlog = m

我想拆分一个文本。我可以在使用
String.split()
时执行此操作。例如,我拆分了“Hello world”,得到“Hello”和“world”作为输出。 当我使用
toLowerCase
做同样的操作时,我会得到“hello”和“world”。但我不想在“world”后面加上这个点。 我尝试使用不同的参数进行拆分,并将
toLowerCase
与.split分开放置。我试着先拆分,然后
toLowerCase
。什么都不管用。我该怎么做才能淡出这一切呢?等 以下是我的拆分方式:

predlog = main.toLowerCase().split("\\s+");

要仅保留字母并拆分其余字母,请执行以下操作:

String[] r = main.replaceAll("[^a-zA-Z ]", "").toLowerCase().split("\\s+");
String[] r = main.replaceAll("\\p{P}", "").toLowerCase().split("\\s+");
要删除所有标点符号并拆分其余标点符号,请执行以下操作:

String[] r = main.replaceAll("[^a-zA-Z ]", "").toLowerCase().split("\\s+");
String[] r = main.replaceAll("\\p{P}", "").toLowerCase().split("\\s+");
toLowerCase()
对点没有影响

如果您想要一个简单但有点神秘的修复,也可以在点上拆分:

predlog = main.toLowerCase().split("\\s+|\\.");
这样做的原因是split()会从返回的数组中丢弃尾随空格。

可能会有所帮助。守则:

String s = "Hello world.";
for (String x : s.toLowerCase().split("[\\p{P} \\t\\n\\r]+"))
    System.out.println(x);
打印出:

> hello
> world

很抱歉,报告的效果无法确认。我用Java 6和Java 7测试了报告的行为,如下所示:

public static void main(String[] args) {
    String helloWorld = "Hello World.";

    String[] splittedHelloWorld = helloWorld.split("\\s+");
    String[] splittedLowerCaseHelloWorld = helloWorld.toLowerCase().split("\\s+");

    boolean splittedHelloWorldContainsDot = checkContainsDot(splittedHelloWorld);
    boolean splittedLowerCaseHelloWorldContainsDot = checkContainsDot(splittedLowerCaseHelloWorld);

    System.out.println(splittedHelloWorldContainsDot); // true
    System.out.println(splittedLowerCaseHelloWorldContainsDot); // true
}

private static boolean checkContainsDot(String[] splittedArray) {
    boolean containsDot = false;

    for (String string : splittedArray) {
        if (string.contains(".")) {
            containsDot = true;
            break;
        }
    }

    return containsDot;
}

你能展示一下文本吗?当你得到没有圆点的“世界”时,你是如何分割的?当我不使用小写字母时,我仍然得到“world.”,末尾有一个点。快速简单的解决方案,plusOne!最好换个地方。可能字符串在标点符号后没有空格。