2017-04-06 56 views
0

如果我有一個字符串,例如蜘蛛,你如何創建一個新的字符串,從第一個元音開始,到第一個字符串的最後一個字符結束。在指定字符後返回子字符串

例如: - 蜘蛛會的重新考慮 - 大象是大象 - 校園將昂皮

謝謝你的幫助。

回答

3

簡單的解決方案與定製CharacterSetString擴展

extension String { 

    func substringFromFirstVowel() -> String 
    { 
     let vowelCharacterSet = CharacterSet(charactersIn: "aeiouAEIOU") 
     guard let range = self.rangeOfCharacter(from: vowelCharacterSet) else { return self } 
     return self.substring(from: range.lowerBound) 
    } 
} 


"elephant".substringFromFirstVowel() // elephant 
"spider".substringFromFirstVowel() // ider 
"campus".substringFromFirstVowel() // ampus 
+0

咦,比我快使用完全相同的解決方案,甚至函數名是一樣的。唯一的區別是我使用了'選項:.caseInsensitive'。 – Sulthan

+0

@Sulthan,感謝提示,但'.caseInsensitive'似乎沒有考慮字符集。 – vadian

+0

@vadiant有趣的。另一個'String' API的怪癖......我可能會使用'[aeiou]'正則表達式:) – Sulthan

0

試試這個小功能

func firstVowel(input : String) -> String { 
    var firstVowel = true 
    let vowels = "aAeEiIoOuU".characters 
    var result = "" 

    for char in input.characters { 

     if(!firstVowel) { 
      result.append(char) 
     } 

     if(vowels.contains(char) && firstVowel) { 
      firstVowel = false 
      result.append(char) 
     } 
    } 
    return result 
} 

print(firstVowels(input: "elephant")) //prints elephant 
print(firstVowels(input: "Spider")) //prints ider