2016-12-08 51 views
0

我必須解決這種情況,我一直在尋找一個沒有成功的解決方案。我試圖通過爲字符串中的每個字符獲得unicode標量來做到這一點,但我無法做到這一點。如何用字母后面的字母替換字符串中的每個字母?

有人能幫我實施這個轉變嗎? 我正在開發Swift 3

+1

更新你的問題機智你曾經嘗試過什麼。 – rmaddy

回答

1

字符串中有一個名爲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" 
-1

試試這個

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:" ") 
+0

它對我來說不是寫在質量和性能方面 – SM18

相關問題