2016-12-08 19 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)}) 
    } 
} 

別のオプションは、unicodeScalarsで文字列UnicodeScalarViewを作成し、そこから新しい文字列を初期化することです。

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

関連する問題