如何用字母表中紧随其后的字母替换字符串中的每个字母?

How to replace each letter in a string with the letter following it in the alphabet?

我必须解决这个问题,我一直在寻找解决方案,但没有成功。我试图通过为字符串中的每个字符获取 unicode 标量来做到这一点,但我无法做到这一点。

有人可以帮我实现这个转换吗? 我在 Swift 3.

开发

试试这个

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

String 有一个名为 unicodeScalars 的 属性,您可以获取它的值。只需使用 UnicodeScalar 初始化器和 flatMap 增加字符串中的每个值,然后使用 reduce 将它们组合成最终字符串:

extension String {
    var shiftedCharacters: String {
        return unicodeScalars.lazy
            .flatMap{UnicodeScalar([=10=].value+1)}
            .reduce("", {[=10=] + String()})
    }
}

另一种选择是使用 unicodeScalars 创建一个 String UnicodeScalarView 并从中初始化一个新字符串:

extension String {
    var shiftedCharacters: String {
        return String(String.UnicodeScalarView(
            unicodeScalars.lazy
            .flatMap{ UnicodeScalar([=11=].value+1) }
        ))
    }
}

测试:

"abcde".shiftedCharacters // "bcdef"
"car".shiftedCharacters   // "dbs"