我試圖寫一個簡單的程序,將搜索字符串並輸出所有值字母首臺什麼是JTextField中如何使用通配符
String[] words= {"apples", "applets", "ash", "bass", "banana", "cat", "chat", "coke"};
開始陣列搜索字符串數組
我想要的是,當我的文本字段不包含任何所有的單詞將出現,如果「應用程序」,那麼只有蘋果和小程序將被顯示。
我試圖寫一個簡單的程序,將搜索字符串並輸出所有值字母首臺什麼是JTextField中如何使用通配符
String[] words= {"apples", "applets", "ash", "bass", "banana", "cat", "chat", "coke"};
開始陣列搜索字符串數組
我想要的是,當我的文本字段不包含任何所有的單詞將出現,如果「應用程序」,那麼只有蘋果和小程序將被顯示。
只是遍歷字符串的評估每一個與startsWith
:
private static String[] filterWords(String[] words, String prefix) {
List<String> filtered = new LinkedList<String>();
for (String word : words) {
if (prefix == null || prefix.lenght() == 0 || word.startsWith(prefix)) {
filtered.add(word);
}
}
return filtered.toArray(new String[filtered.size()]);
}
您需要遍歷您的數組元素一個接一個,使用String.startsWith(prefixText)函數來檢查你的字符串開始搜索文本,添加搜索元素放在一個List中並將該列表轉換爲數組返回該數組。
例如:
public String[] searchText(String[] strArray,String searchTxt)
{
if(searchTxt == null || searchTxt.length()==0)
return strArray;
List<String> resultArray = new LinkedList<String>();
for (String word : strArray) {
if (word.startsWith(searchTxt)) {
resultArray.add(word);
}
}
return resultArray.toArray(new String[resultArray.size()]);
}
如果搜索字符串的長度爲零,比你返回原數組不反覆的陣列。
尤其是對於大型陣列小更有效的解決辦法是:
private static String[] filterWords(String[] words, String prefix) {
List<String> filtered = new LinkedList<String>();
if (prefix == null || prefix.lenght() == 0){
return words;
}
else{
for (String word : words) {
if(word.startsWith(prefix)) {
filtered.add(word);
}
}
return filtered.toArray(new String[filtered.size()]);
}
這可以和簡明的Java 8非常高效地完成Lambda表達式:
String[] words = {"apples", "applets", "ash", "bass", "banana", "cat", "chat", "coke"};
String searchText = "app"; //Coming from the TextArea
String[] results = Arrays.stream(words)
.filter(item -> item.startsWith(searchText))
.toArray(size -> new String[size]);
你有沒有看着['字符串# contains'](http://docs.oracle.com/javase/7/docs/api/java/lang/String.html#contains%28java.lang.CharSequence%29)? – assylias
你可以試試'String'的'startsWith'函數 – Rehan
你看過'String#startsWith'嗎? –