2013-07-18 127 views
0

我想从文本文件中取出一行并删除所有标点符号,如逗号,句点,单引号,双引号等,并将字符串设置为小写。我正在使用的代码是:正则表达式命令执行不正确

inputLine.replaceAll("[^a-zA-Z'\\s]", "").toLowerCase(); 

对我来说,理解会做到这一点,但事实并非如此。它也不会将单词设置为小写。因此,我包括在另一行特异性除去句号和逗号:

inputLine.replaceAll("\\.", ""); 

,然后将每个单词分割成一个字符串数组:

String[] strings = inputLine.split(" "); 

然而,我仍然结束了词语如sets,Thereproperties:[1]。有谁知道为什么会发生这种情况,或者你能否提供解决方案?我之前没有做过太多的正则表达式工作,所以这对我来说都是非常新的。

+0

给我们一些'inputLine'包含的样本和你得到的输出。 –

+0

欢迎来到SO。在这里,你应该参加[tour](http://stackoverflow.com/about)。 –

+0

arshajii指出了什么是错的,我没有重新分配字符串,当我使用.replaceAll(..) – user2593573

回答

1

你重新分配inputLine?记住:字符串是不可变的!

inputLine = inputLine.replaceAll("[^a-zA-Z'\\s]", "").toLowerCase(); 

顺便说一句,你还可以使用.replaceAll("\\p{Punct}", "")来代替所有的标点符号。

+0

我肯定忘了重新分配inputLine,谢谢指出! – user2593573