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