2015-03-03 77 views
1

只是我想要做的一個簡單的代碼。如何查找給定字符串中的元音?

String vowels = "aeiou"; 
if (word.indexOf(vowels.toLowerCase()) == -1){ 
     return word+"ay"; 
} 

我試過使用這段代碼來檢查一個單詞是否沒有元音,如果是這樣就給它添加「ay」。到目前爲止沒有運氣。我認爲我的問題在indexOf方法的某處,任何人都可以向我解釋一下嗎?

+0

我正在嘗試使用indexOf來完成此操作。 – 2015-03-03 04:33:50

+1

你的代碼尋找單詞中的整個元音集合,而不是至少發生一個元音。這看起來像重複的http://stackoverflow.com/questions/13734630/use-string-methods-to-find-and-count-vowels-in-a-string – killogre 2015-03-03 04:37:01

+0

再次,我知道如何解決這個通常。等於我需要使用indexOf – 2015-03-03 04:38:09

回答

2

事情是這樣的:

public String ModifyWord(String word){ 
    String[] vowels = {"a","e","i","o","u"}; 
    for (String v : vowels) { 
     if(word.indexOf(v) > -1){ // >-1 means the vowel is exist 
      return word; 
     } 
    } 
    return word+"ay"; //this line is executed only if vowel is not found 
} 
+0

對不起中間線做什麼?如果(word.indexOf(v)> -1){ – 2015-03-03 04:49:10

+0

'if(word.indexOf(v)> -1)'檢查元音**是否存在**,一旦找到第一個元音(如果存在)不必再進行檢查 – DnR 2015-03-03 04:52:23

+0

爲什麼要在外面添加+「ay」? – 2015-03-03 04:54:14

0

你可以使用正則表達式,並String.matches(String regex)。首先是一個正則表達式。 [AEIOUaeiou]vowel character class.*(s)將消耗任何可選的非元音(s)。

String regex = ".*[AEIOUaeiou].*"; 

然後你就可以測試你的word

if (word.matches(regex)) { 

注意vowels已經是小寫(沒有必要在這裏小寫word,正則表達式包含大寫)。

相關問題