我必須解決這種情況,我一直在尋找一個沒有成功的解決方案。我試圖通過爲字符串中的每個字符獲得unicode
標量來做到這一點,但我無法做到這一點。如何用字母后面的字母替換字符串中的每個字母?
有人能幫我實施這個轉變嗎? 我正在開發Swift 3
。
我必須解決這種情況,我一直在尋找一個沒有成功的解決方案。我試圖通過爲字符串中的每個字符獲得unicode
標量來做到這一點,但我無法做到這一點。如何用字母后面的字母替換字符串中的每個字母?
有人能幫我實施這個轉變嗎? 我正在開發Swift 3
。
字符串中有一個名爲unicodeScalars屬性,你可以得到它的價值。只要增加使用UnicodeScalar初始化和flatMap從字符串中的每個值,並用減少將它們組合成最終的字符串:
extension String {
var shiftedCharacters: String {
return unicodeScalars.lazy
.flatMap{UnicodeScalar($0.value+1)}
.reduce("", {$0 + String($1)})
}
}
另一種選擇是創建一個字符串UnicodeScalarView與unicodeScalars和初始化從一個新的字符串:
extension String {
var shiftedCharacters: String {
return String(String.UnicodeScalarView(
unicodeScalars.lazy
.flatMap{ UnicodeScalar($0.value+1) }
))
}
}
測試:
"abcde".shiftedCharacters // "bcdef"
"car".shiftedCharacters // "dbs"
試試這個
let str = "Hello"
let newStr
for index in 0...str.length-2 {
let i = str.index(str.startIndex, offsetBy: index)
newStr = str.bridgeToObjectiveC().stringByReplacingCharactersInRange(NSMakeRange(index,1), withString:str[i+1])
}
newStr = str.bridgeToObjectiveC().stringByReplacingCharactersInRange(NSMakeRange(str.length-1,1), withString:" ")
它對我來說不是寫在質量和性能方面 – SM18
更新你的問題機智你曾經嘗試過什麼。 – rmaddy