2014-06-11 144 views
1

我想通過首先刪除停用詞並在其上應用詞幹分析算法來處理文本,最後將它們拆分爲單詞並將它們保存到文件中。 我做過的一切,我的問題是空格的文件中包含的話如下:從文件java中刪除空格

Hi 
teacher 

mother 
sister 
father .... and so on 

的問題是老師和母親之間的空間。 我想將其刪除。我無法弄清楚它的原因。

以下是相關代碼的一部分。

public void parseFiles(String filePath) throws FileNotFoundException, IOException { 
    File[] allfiles = new File(filePath).listFiles(); 
    BufferedReader in = null; 
    for (File f : allfiles) { 
     if (f.getName().endsWith(".txt")) { 
      fileNameList.add(f.getName()); 
      Reader fstream = new InputStreamReader(new FileInputStream(f),"UTF-8"); 
      in = new BufferedReader(fstream); 
      StringBuilder sb = new StringBuilder(); 
      String s=null; 
      String word = null; 
      while ((s = in.readLine()) != null) { 
       s=s.trim().replaceAll("[^A-Za-z0-9]", " ");  //remove all punctuation for English text 
       Scanner input = new Scanner(s); 
        while(input.hasNext()) {    
         word= input.next(); 
         word=word.trim().toLowerCase(); 
       if(stopword.isStopword(word)==true) 
       { 
        word= word.replace(word, ""); 
       } 
       String stemmed=stem.stem (word); 
       sb.append(stemmed+"\t"); 

        } 
        //System.out.print(sb); 

      } 
      String[] tokenizedTerms = sb.toString().replaceAll("[\\W&&[^\\s]]", "").split("\\W+"); //to get individual terms (English) 

      for (String term : tokenizedTerms) { 
       if (!allTerms.contains(term)) { //avoid duplicate entry 
       allTerms.add(term); 
        System.out.print(term+"\t"); 
       } 
      } 
      termsDocsArray.add(tokenizedTerms); 
     } 
    } 
    //System.out.print("file names="+fileNameList); 
} 

請幫忙。 感謝

回答

4

爲什麼不使用的,如果檢查,如果該行是空的?

while ((s = in.readLine()) != null) { 
    if (!s.trim().isEmpty()) { 
    ... 
    } 
} 
+2

我還要補充一個'TRIM()',你可以考慮空字符串,如果它僅僅是由空格 – BackSlash

+0

你說得對,感謝的話。 – Christian

+1

你也可以使用'isEmpty()'方法 –

1

嘗試這樣的事情來消除所有空行:

String yourText = "teacher\nmother etc.."; 
String adjustedText = yourText.replaceAll("(?m)^[ \t]*\r?\n", ""); 
+0

謝謝你,我的問題解決了 – Souad

1

在while循環添加此條件也

,而((S = in.readLine())!= NULL & &(!(StringUtils.isBlank(S)))){

//你的邏輯在這裏。 }

+0

謝謝我解決了這個問題 – Souad