2013-05-21 235 views
0

匹配我想解析,以一個字符串,看它是否整個字符串或一個子串匹配。 我嘗試這樣做:一個字符串查找是否有另一個字符串

String [] array = {"Example","hi","EXAMPLE","example","eXamPLe"}; 
String word; 
... 
if (array[j].toUpperCase().contains(word) || array[j].toLowerCase().contains(word) ) 
System.out.print(word + " "); 

但我的問題是:

當用戶輸入單詞"Example"(區分大小寫),在我的陣列有"Example"它不打印,只打印"EXAMPLE""example"這是因爲當我的程序比較兩個字符串時,它會將我的array[j]字符串轉換爲大寫或小寫字母,因此它不會將單詞與「例子」一詞的大寫和小寫匹配。因此,在這種情況下

如果用戶輸入"Examp"我希望它打印:

Example EXAMPLE example eXamPLe 
+0

這是功課? –

+0

不,這是我的程序 – Frank

+0

程序爲...大學運動什麼的,還是這是一個真實世界的應用程序? –

回答

5

您可以將兩個輸入字符串和候選人爲大寫調用包含前()。

if (array[j].toUpperCase().contains(word.toUpperCase())) { 
    System.out.print(word + " "); 
} 
+0

偉大的,它的作品像一個魅力 – Frank

3

如果你只是在尋找充滿火柴,使用equalsIgnoreCase

當需要部分匹配你可能需要一個類似 trie什麼的。

+0

檢查輸入爲「Examp」時的最後一種情況。順便說一下,不需要太複雜。來自Apache Commons的StringUtils已經可以處理這個問題。 –

+0

@LuiggiMendoza謝謝,在算法標記中過長,對我來說是膝蓋反應。 –

+0

使用嘗試這種情況就像使用斷頭臺剪頭髮:) –

1

word相同的情況進行比較。

if (array[j].toUpperCase().contains(word.toUpperCase())) 
{ 
} 
1

您正在尋找這樣的:

if (array[j].toUpperCase().contains(word.toUpperCase())) { 
    System.out.print(array[j]+ " "); 
} 

這將打印:

Example EXAMPLE example eXamPLe 

正如你想要的!

0

將此內容作爲您的任務提交。你一定會脫穎而出。

String word = "Exam"; 
String [] array = {"Example","hi","EXAMPLE","example","eXamPLe"}; 

for (String str : array) 
    if (str.matches("(?i)"+word+".*")) 
    System.out.print(str + " "); // prints: Example EXAMPLE example eXamPLe 
相關問題