如何将字符串的每个备用字符大写?
How to capitalize each alternate character of a string?
假设有一个字符串 "johngoestoschool" 它应该变成 "JoHnGoEsToScHoOl" 并且如果中间有一个特殊字符它应该忽略它例如 given string "jo$%@#hn^goe!st#os&choo)l" 答案应该是 "Jo$%@#Hn^GoE!sT#oS&cHoO)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
并替换范围会提供更好的性能:
func altCaptalized(string: String) -> String {
var stringAr = string.characters.map({ String([=10=]) }) // 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
}
假设有一个字符串 "johngoestoschool" 它应该变成 "JoHnGoEsToScHoOl" 并且如果中间有一个特殊字符它应该忽略它例如 given string "jo$%@#hn^goe!st#os&choo)l" 答案应该是 "Jo$%@#Hn^GoE!sT#oS&cHoO)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
并替换范围会提供更好的性能:
func altCaptalized(string: String) -> String {
var stringAr = string.characters.map({ String([=10=]) }) // 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
}