【问题标题】:How to capitalize each alternate character of a string?如何将字符串的每个备用字符大写?
【发布时间】:2017-03-08 09:11:11
【问题描述】:

假设有一个字符串“johngoestoschool”,它应该变成“JoHnGoEsToScHoOl”,如果中间有特殊字符,它应该忽略它,例如给定字符串“jo$%@#hn^goe!st#os&choo)l”答案应该是“Jo$%@#Hn^GoE!sT#oS&cHoO)l”

来自this的回答,我们为了迭代我们可以这样做:

let s = "alpha"
for i in s.characters.indices[s.startIndex..<s.endIndex]
{
    print(s[i])
}

为什么我们不能在这里打印“i”的值? 当我们执行 i.customPlaygroundQuickLook 时,它会键入 int 0 到 int4。

所以我的想法是

if (i.customPlaygroundQuickLook == 3) {
        s.characters.currentindex = capitalized
}

请帮忙

【问题讨论】:

    标签: ios arrays string swift3 swift-playground


    【解决方案1】:

    这应该解决您的功能,困难的部分只是检查天气字符是否为字母,使用inout 并替换范围会提供更好的性能:

    func altCaptalized(string: String) -> String {
        var stringAr = string.characters.map({ String($0) }) // Convert string to characters array and mapped it to become array of single letter strings
        var numOfLetters = 0
    
        // Convert string to array of unicode scalar character to compare in CharacterSet
        for (i,uni) in string.unicodeScalars.enumerated() {
            //Check if the scalar character is in letter character set
            if CharacterSet.letters.contains(uni) { 
                if numOfLetters % 2 == 0 {
                    stringAr[i] = stringAr[i].uppercased() //Replace lowercased letter with uppercased
                }
                numOfLetters += 1
            }
        }
    
        return stringAr.joined() //Combine all the single letter strings in the array into one string
    }
    

    【讨论】:

    • “它就像一个魅力”,唯一的问题是它直接在我的头上,我要求你添加 cmets 解释你用 stringAr 做了什么,这里的 unicodeScalars 功能是什么并加入了它是什么在做什么?
    • 当然,我认为它非常简单,它只是简单地将字符串转换为单个字母的数组,因为它具有不同的类型,您也可以将它们中的每一个打印到控制台以查看详细信息
    • 你为什么要把fifthStr 分配回fifthStr ?使用不同的名称
    猜你喜欢
    • 2010-12-25
    • 1970-01-01
    • 1970-01-01
    • 2014-05-19
    • 2010-12-05
    • 2014-04-05
    相关资源
    最近更新 更多