2012-10-13 35 views
1

我想檢查在某些情況下是否有'壞'字,如檢查寄存器形式的ID。但我不知道如何檢查它。最底層的代碼就是我對它的瞭解。如何過濾Java中的單詞?

String words = "admin,administrator,babo,sir,melon"; 

public boolean checkWord(String input) { 
    if(something here that i need to find??) return false; 
    else return true; 
} 

字的圖案以逗號分開的,而且我真的需要它幫助請!

+0

對於每個單詞,檢查輸入是否包含/等於? –

+0

我想我沒有正確地得到問題。你想尋找單個單詞,或者你想檢查你的字符串輸入是否包含任何這些單詞? – PbxMan

回答

1

另一個例子,如果你想尋找一組單詞你裏面輸入

public class TestCheckWord { 
    static String words = "admin,administrator,babo,sir,melon"; 
    public static void main (String args[]){   
     System.out.println(checkWord("Hello melon")); 
     System.out.println(checkWord("Hello sir")); 
     System.out.println(checkWord("Hello you")); 
    } 
    public static boolean checkWord(String input) { 
     String wordArray[] = words.split(","); 
     for(int i=0; i<wordArray.length; i++){ 
      if(input.indexOf(wordArray[i])>-1) 
       return true;    
     } 
     return false; 
    } 
} 

甚至還有另一種方式來查找單詞只有當你的輸入只包含一個單詞時(在這種情況下,排列順序並不重要)

import java.util.Arrays; 
import java.util.HashSet; 
import java.util.Set; 
public class TestCheckWord2 { 
    public static void main (String args[]){   
     System.out.println(checkWord("babo")); 
     System.out.println(checkWord("bobo"));  
    } 
    private static String[] WORDS = {"admin", "babo", "melon", "sir", "administrator"}; 
    private static Set<String> mySet = new HashSet<String>(Arrays.asList(WORDS)); 
    public static boolean checkWord(String input) { 
     return mySet.contains(input); 
    } 
} 
+0

使用二進制搜索而不是線性搜索。 (你必須先排序數組) –

+0

不要忘記輸入小寫。否則,如果它有大寫字母,它將不起作用;) – JannGabriel

4

最簡單的事情將是搜索詞在排序後的數組,像這樣:

private static String[] WORDS = new String[] { 
    "admin", "administrator", "babo", "melon", "sir" 
}; 

public boolean checkWord(String input) { 
    return Arrays.binarySearch(WORDS, input) < 0; // Not found 
} 
+0

哇..謝謝! –

+0

+1喜歡簡單,絕不會想到這一點:P – MadProgrammer

+0

作爲一個說明,這種方法將工作** **只有當數組進行排序。 OP的例子顯示了一個有序的'String'數組。 –