2015-06-09 43 views
0

我想製作一個程序,將名爲text.txt的文本文件讀入ArrayList。再之後,它必須刪除包含單詞的任何文字行的「我愛蛋糕」如何將文本文件讀入數組列表,排除包含某些單詞的行?

所以說這是從文件中的文本:

I love cake so much 
yes i do 
I love cake 
I dont care 

這裏是我的代碼。我有閱讀文件,但我不明白我如何刪除某些行(包含「我愛蛋糕」)。

import java.io.*; 
import java.util.*; 
public class Cake { 
    public static void main(String[] args) throws Exception { 
     File fileIn = new File("text.txt"); 
     ArrayList<String> text = new ArrayList<String>(); 
     Scanner s= new Scanner(fileIn);  
     String line; 

     while (s.hasNextLine()) { 
      line = s.nextLine(); 
      System.out.println(line); 
     } 
     s.close(); 
    } 
} 
+0

由於您正在閱讀行,你可以使用String.matches()排除一些字符串,例如:如果(line.matches(「我愛餅」){System.out的.println(line);}。由於String.matches()採用正則表達式參數,匹配的質量可以通過正則表達式通配符等來提高。 –

回答

1

嘗試String.contains() method

您的代碼應該是這樣的:

import java.io.*; 
import java.util.*; 
public class Cake { 

    public static void main(String[] args) throws Exception { 
     File fileIn = new File("text.txt"); 
     ArrayList<String> text = new ArrayList<String>(); 
     Scanner s = new Scanner(fileIn); 
     String line; 

     while (s.hasNextLine()) { 
      line = s.nextLine(); 

      if(!line.contains("I love cake")){ //If "I love cake" is not in the line 
       System.out.println(line); //Then it's ok to print that line 
       text.add(line); //And we can add it to the arraylist 
      } 
     } 
     s.close(); 
    } 

}  
+0

任何拒絕投票的理由...? – River

+1

不知道爲什麼。但我給了你一個贊成: - ) – steffen

6

Java8:

Path file = new File("text.txt").toPath(); 
List<String> linesWithoutCake = Files.lines(file) 
     .filter(s -> !s.contains("I love cake")) 
     .collect(Collectors.toList()); 

您可以用continue using the stream不包含您的圖案線條。例如數得過來:

long count = Files.lines(file).filter(s -> !s.contains("I love cake")).count(); 
+0

這是非常漂亮的。 Java 8單行版+1。 – River

相關問題