有没有办法避免这种重复的方法调用?

时间:2019-02-13 21:52:27

标签: java loops repeat

我正在使用HashMap计数文章中的所有单词实例,我正在尝试删除除空格以外的所有非单词字符(因为它们已经被.split()删除)。有没有办法不重复“ pWord = pWord.replace(...);”每次循环并在括号内传递不同的参数?

pWord = pWord.replace('"', '\"');
pWord = pWord.replace("–", "");
pWord = pWord.replace("\"", "");
pWord = pWord.replace(".", "");
pWord = pWord.replace("-", "");

2 个答案:

答案 0 :(得分:2)

一种实现此目的的方法是将'A'与正则表达式一起使用。这是带有正则表达式的示例代码,用于在代码中替换的字符:

char

输出:

replaceAll

另外,请注意that

  

String#replaceAll()将参数解释为常规参数   表达。 \是String和regex中的转义字符。您   需要为正则表达式进行两次转义

P.S。测试您的正则表达式的有用资源:https://regex101.com/

答案 1 :(得分:1)

如果要删除所有非字母字符,另一种方法是重写字符串,而忽略所有其他符号。

String s = "hello world _!@#";
StringBuilder sb = new StringBuilder();
for (char c : s.toCharArray()) {
    if (Character.isDigit(c) || Character.isLetter(c) || Character.isWhitespace(c))
        sb.append(c);
}
s = sb.toString();
System.out.println(s);