【问题标题】:Returning a substring after a specified character返回指定字符后的子字符串
【发布时间】:2017-04-06 18:16:43
【问题描述】:

如果我有一个字符串,例如蜘蛛,你如何创建一个从第一个元音开始并以初始字符串的最后一个字符结束的新字符串。

例如: - 蜘蛛会是 ider - 大象就是大象 - 校园将是ampus

感谢您的帮助。

【问题讨论】:

    标签: swift3


    【解决方案1】:

    使用自定义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
    • @Sulthan,感谢您的提示,但 .caseInsensitive 似乎没有考虑字符集。
    • @vadiant 有趣。 String API 的另一个怪癖......我可能会使用 [aeiou] 正则表达式 :)
    【解决方案2】:

    试试这个小功能

    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
    

    【讨论】:

      猜你喜欢
      • 2016-05-28
      • 1970-01-01
      • 1970-01-01
      • 2013-03-30
      • 1970-01-01
      • 2016-08-27
      • 2019-08-19
      • 2020-11-12
      • 2015-09-18
      相关资源
      最近更新 更多