我试图弄清楚如何将正则表达式值组合起来做两件事 1)删除所有空格 2)删除所有标点符号
现在我正在使用
splitWords = (currentLine.split("\\s+"));
这会从我正在阅读的文件中删除所有空格,现在如何添加标点符号?根据API / p删除所有标点符号。
更新: 对不起,我忘了提到我正在使用split,因为我在一个文件中用空格分割然后将它们添加到一个数组中,所以例如:你好,你在数组中如何变成:arr [0] =你好,arr [1]如何,arr [2] =是..等等。但是我不希望数组中的元素有标点符号。
答案 0 :(得分:0)
如果要替换标点符号和空格,那么为什么要使用split
方法。
像这样使用 - currentLine.replaceAll("\\s+|[<punctuation marks>]+", "")
其中<punctuation marks>
都是标点符号。即[\\!,\\.\\?]
答案 1 :(得分:0)
您可以在字符类中组合多个字符类:
"[\\s\\p{Punct}]+" // Whitespace + Punctuation (POSIX)
对于unicode版本,请使用:
"[\\s\\pP]+" // Whitespace + Punctuation (Connector,Dash,Open,Close,InitialQuote,FinalQuote,Other)
或:
"[\\pZ\\pP]+" // Separator (Line,Paragraph,Space) + Punctuation (...)
如果您只想删除字符,则无需使用split()
:
// Returns "HesaidItsaniceworld"
"He said: \"It's a nice world\".".replaceAll("[\\s\\p{Punct}]+", "");