忽略字符串中的标点符号

时间:2014-09-18 05:40:55

标签: java

我正在读取文件中的文字。我想忽略带有单词的标点符号(例如,如果Nay,那么我只想读Nay)。我现在编写的代码只是忽略了“,”但我的要求是忽略所有的标点符号和数字。我的方法很乏味,也很愚蠢。请建议我如何忽略所有标点符号和数字。

如果您认为这篇文章无关紧要,请不要减少我的代表并阻止我的帐户。让我知道你还想要什么,我将与你分享。

我试图阅读的其中一个文本文件如下: Text File

我已经编写了如下行代码来忽略“,”

if(wordArray[j].charAt(k)!=',')

请在下面找到相关代码

for(int k=0;k<wordArray[j].length();k++)
{
    if(wordArray[j].charAt(k)!=',' )
    {
        arrayFinal.add(wordArray[j].charAt(k));
    }
}

更新了帖子

2 个答案:

答案 0 :(得分:0)

我不确定你究竟想要什么,但是根据你的意见,我知道你想要这个。

public static void main(String[] args) {
    Scanner sc = new Scanner(System.in);
    String s = sc.next().replaceAll("[^a-zA-Z]", "");
    System.out.println(s);
}

can't --> input
cant  --> output

答案 1 :(得分:0)

作为一般编程指南,将大型复杂方法分解为较短的方法。这有许多好处(单元测试,可读性,可扩展性,重用)。

所以你可以这样做:

public static String stripPunctuation(String fullString) {
    StringBuilder sb = new StringBuilder();
    for (int i=0; i < fullString.length(); i++) {
        if (Character.isLetter(fullString.charAt(i))) {
           sb.append(fullString.charAt(i));
        }
    }
    return sb.toString();
}

并在需要时调用它。可能还有其他第三方库可以执行此操作,但上述内容不会引入依赖项。

然后您的单元测试方法可能如下所示:

 @Test
 public void testStripPunctuationFromString() {
      assertEquals("test", TheClassName.stripPunctuation(".*te@st45&"));
      assertEquals("", TheClassName.stripPunctuation(".#*^"));
 }