java - 如何从 Java 中的输入文本中删除标点符号?

我正在尝试使用 Java 中的用户输入来获取一个句子,我需要将其设为小写并删除所有标点符号。这是我的代码:

    String[] words = instring.split("\\s+");
    for (int i = 0; i < words.length; i++) {
        words[i] = words[i].toLowerCase();
    }
    String[] wordsout = new String[50];
    Arrays.fill(wordsout,"");
    int e = 0;
    for (int i = 0; i < words.length; i++) {
        if (words[i] != "") {
            wordsout[e] = words[e];
            wordsout[e] = wordsout[e].replaceAll(" ", "");
            e++;
        }
    }
    return wordsout;

我似乎找不到任何方法来删除所有非字母字符。我尝试过使用正则表达式和迭代器,但没有成功。感谢您的帮助。

最佳答案

这首先删除所有非字母字符,折叠为小写,然后拆分输入,在一行中完成所有工作:

String[] words = instring.replaceAll("[^a-zA-Z ]", "").toLowerCase().split("\\s+");

空格最初留在输入中,因此拆分仍然有效。

通过在拆分之前删除垃圾字符,您可以避免遍历元素。

https://stackoverflow.com/questions/18830813/

相关文章:

javascript - ".000Z"的 "yyyy-mm-ddT00:00:00.000Z"是什

javascript - 在 Javascript 中解析 ISO 8601 日期

r - 在 ggplot2 中使用 scale_x_date 格式化日期

xml - XML 中的引号。单人还是双人?

intellij-idea - 启用/禁用 IntelliJ 的花哨≠(不等于)运算符

c# - C# 有自动代码格式化程序吗?

c# - 一次格式化 Visual Studio 项目中的所有文件

c++ - 使用 C++ 输出运算符打印前导零?

c# - 使用c#的两个小数位

javascript - 最好的 JavaScript 日期解析器和格式化程序?