удаление пробелов из файла 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);
}

Пожалуйста помоги. Спасибо


person Souad    schedule 11.06.2014    source источник


Ответы (3)


Почему бы не использовать if, чтобы проверить, пуста ли строка?

while ((s = in.readLine()) != null) {
  if (!s.trim().isEmpty()) {
  ...
  }
}
person Christian    schedule 11.06.2014
comment
Я бы также добавил trim(), так как вы можете считать строку пустой, если она состоит только из пробелов. - person BackSlash; 11.06.2014
comment
вы также можете использовать метод isEmpty() - person amit bhardwaj; 11.06.2014

Попробуйте что-то вроде этого для удаления всех пустых строк:

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

В цикле while также добавьте это условие,

while ((s = in.readLine()) != null && (!(StringUtils.isBlank(s)))) {

// ваша логика здесь. }

person Prabahar    schedule 11.06.2014