【发布时间】:2017-04-06 18:16:43
【问题描述】:
如果我有一个字符串,例如蜘蛛,你如何创建一个从第一个元音开始并以初始字符串的最后一个字符结束的新字符串。
例如: - 蜘蛛会是 ider - 大象就是大象 - 校园将是ampus
感谢您的帮助。
【问题讨论】:
标签: swift3
如果我有一个字符串,例如蜘蛛,你如何创建一个从第一个元音开始并以初始字符串的最后一个字符结束的新字符串。
例如: - 蜘蛛会是 ider - 大象就是大象 - 校园将是ampus
感谢您的帮助。
【问题讨论】:
标签: swift3
使用自定义CharacterSet 作为String 扩展的简单解决方案
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
【讨论】:
options: .caseInsensitive。
.caseInsensitive 似乎没有考虑字符集。
String API 的另一个怪癖......我可能会使用 [aeiou] 正则表达式 :)
试试这个小功能
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
【讨论】: