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

2022-08-31 12:13:14

我试图使用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;

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


答案 1

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

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

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

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


答案 2

可以使用以下正则表达式构造

标点符号:其中之一!”#$%&'()*+,-./:;<=>?@[]^_'{|}~

inputString.replaceAll("\\p{Punct}", "");