簡體   English   中英

如何大寫字符串的每個備用字符?

[英]How to capitalize each alternate character of a string?

可以說有一個字符串“ johngoestoschool”,它應該變成“ JoHnGoEsToScHoOl”,如果它們之間有特殊字符,則應該忽略它,例如給定字符串“ jo $%@#hn ^ g oe!st#os&ch oo)l ”答案應為“ Jo $%@#Hn ^ G oE!sT#oS&cH oO)l”

這個答案中,我們可以迭代來做:

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
}

請幫助

這應該可以解決您的功能,困難的部分只是檢查天氣字符是否為字母,使用inout和replace范圍將提供更好的性能:

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
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM