2013-04-20 74 views
2

這不是關於過濾不好的單詞以便進入。想象一下,如果用戶在ConsoleProgram abcd,abcde和abcde中爲用戶提供字符串abc作爲過濾器,則您有名爲 abcd,abcde,abcdef,abfg,abdc的字符串列表abcdef將被打印出來。我想過使用子字符串,但我無法實現它有沒有人有任何想法.. 請注意,我是新來的Java和不能稱職的感謝!在java中過濾字符串

回答

3

你需要的第一件事就是了解字符串的正則表達式,也許在這裏:http://docs.oracle.com/javase/tutorial/essential/regex/。 嘗試下一個簡單的代碼。

public class StringMatcher { 

    public static void main(String[] args) { 
     String[] words = new String[]{"abcd", "abcde", "abcdef", "abfg", "abdc"}; 
     String filter = "abc"; 

     for (String word : words) { 
      if (word.matches(filter + "(.*)")) { 
       System.out.println("This pass the filter: " + word); 
      } 
     } 
    } 
} 
+0

最好的感謝..一個細節,我將如何使它作爲Java applet工作?是否可以在那裏鍵入abc,然後在那裏打印預期的輸出 – regeme 2013-04-20 15:25:12

+1

@regeme我不認爲在這裏我們必須使用正則表達式。 String#contains(string)最適合​​這種情況。 – 2013-04-20 15:33:52

+0

您需要四個組件(一個TextField,其中包含列表類型,另一個插入過濾器的文本字段,一個用於處理方法的Button和一個需要顯示結果的Label)。對我而言,Java Applet是一種舊式的解決問題的方式,邏輯是相同的,您需要一個ActionListener作爲按鈕並調用可以處理它的方法。 – tiveor 2013-04-21 00:13:08

0

使用String.contains() - 當字符串包含給定的字符序列返回true,看到string-javadoc

+0

在其目前的形式,這應該是一個評論 – 2013-04-20 15:03:15

+0

哦,你是對的,完全忘了..做編輯 – 2013-04-20 15:03:53

1

試試這個:如果在列表中的項目包含由用戶輸入的字符串,它會被打印出來。

input = "abc"; 
for(int i = 0 ; i < list.size(); i++){ 
    if (list.get(i).contains(input)) 
    System.out.println(list.get(i)); 
} 
1

假設您的字符串位於名爲wordBank的ArrayList中。

for(String i : wordBank) { //loops through the array with 'i' being current index 
    if(i.contains("abc")) { //checks if index contains filter String 
     System.out.println(i); //prints out index if filter String is present 
    } 
}