2013-06-28 109 views
0

我正在处理我的任务,即从字典列表和段落中读入,并计算某段单词在段落中显示的次数,所有这些操作都使用LinkedLists和BST。我们已经得到regex命令来分割paragraph.txt文件,命令是"[\\s|\\pPunct]+"这对我不起作用,所以我使用的是[\\s, ?!]+,但是这并没有做到我想要的所有内容,并且自从正则表达式命令在这门课的摘要之外,我对他们了解不多。正则表达式将单词拆分为单词

我正在寻找一个删除所有句点,逗号和空格的命令。 [\\s, ?!]+做了前两个,但是,如果我有这条线,例如;

..some line here 

more text here... 

返回的行不会被删除,我试图删除它,当我将每个单词添加到我的LinkedList中;

public static void insertParagraph(String[] strings) { 
    for(int i = 0; i < strings.length; i++) { 
     if(strings[i] != "" || strings[i] != " " || strings[i] != null) 
      paragraph.insertFirst(strings[i].replaceAll("[^a-zA-Z'\\s]","").toLowerCase()); 
    } 
} 

但是,如果声明不起作用,任何人有任何建议?

回答

4

方括号表示一个字符类,圆括号表示一个捕获组。

查看Pattern类来查看预定义的字符类。

"[\\s|\\pPunct]+" // wrong 
"(\\s|\\p{Punct})+" // correct 
+0

谢谢,这似乎做同样的事情'[\\ S,?!] +',有没有办法删除的返回键,不然你就知道它被存储为一个数组中? – user123

+1

@ user1327636:你是什么意思_remove返回key_,你的意思是换行符\ n?它是'\\ s'的一部分,你可以在我上面提供的链接中看到。 – jlordo

+0

我不确定如何解释它,如果你看看OP,有一行文本,然后是空行。你如何删除该行?例如,如果我在该行中放置空格,我的if语句'strings [i]!=“”'会捕获它,但否则它不会。 – user123