2015-07-10 154 views
-3
String text = "Good morning. Have a good class. " + 
"Have a good visit. Have fun!"; 
String[] words = text.split("[ \n\t\r.,;:!?(){"); 

在教科书提供该split方法,旨在消除在句子中的所有分隔符,以及空格字符,但显然它不工作,并抛出一个异常的正则表达式让我失望....我想知道我们可以在这里做些什么来使它工作?这个要求是在split方法之后,`String []字中的所有内容都只是没有任何分隔符的英文单词或者空格字符!非常感谢!如何使用split()从Java中的句子中删除所有分隔符?

+1

你忘了关闭字符类。在正则表达式的末尾添加']'。你也可以添加'+'来让它找到一个或多个连续的分隔符。 – Pshemo

回答

4

你缺少你的性格类关闭]

String[] words = text.split("[ \n\t\r.,;:!?(){]"); 

顺便说一句,你可以这样做(和它是更好的选择):

String[] words = text.split("\\W+"); 

分裂在任何非单词字符。

+1

'\\ W'可能不是最好的主意。它也会在'''上分割'所以'不要迟到''会以'Don''t'结尾...... – Pshemo

+0

嗯,在这种情况下''\\ W && [^ \'']]'会是更好的正则表达式分裂 – anubhava

+1

是的,这可以做的伎俩,但让我们可能不会混淆OP谁似乎是新的正则表达式:) – Pshemo

0

String.split()不适用于删除字符。它用于将String分成更小的子字符串。

实施例:

String s = "This is a string!"; 
String[] tokens = s.split(" "); 

拆分将已经使用的字符串“”(一个空格字符)作为分隔符来,那么,分割字符串。其结果是,该阵列tokens看起来像

{"This", "is", "a", "string!"} 

如果你想删除字符,尽量考虑看看String.replaceAll()

相关问题