如何用字母表中的字母替换字符串中的每个字母?

时间:2016-12-08 17:04:43

标签: string swift3 character alphabetical

我必须解决这个问题,我一直在寻找一个没有成功的解决方案。我尝试通过为字符串中的每个字符获取unicode标量来实现此目的,但我无法使其工作。

有人可以帮我实现这种转变吗? 我正在Swift 3开发。

2 个答案:

答案 0 :(得分:1)

String有一个名为unicodeScalars的属性,您可以获取其值。只需使用UnicodeScalar initializer和flatMap递增字符串中的每个值,并使用reduce将它们组合成最终字符串:

extension String {
    var shiftedCharacters: String {
        return unicodeScalars.lazy
            .flatMap{UnicodeScalar($0.value+1)}
            .reduce("", {$0 + String($1)})
    }
}

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

extension String {
    var shiftedCharacters: String {
        return String(String.UnicodeScalarView(
            unicodeScalars.lazy
            .flatMap{ UnicodeScalar($0.value+1) }
        ))
    }
}

测试:

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

答案 1 :(得分:-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:" ")