如何用字母表中紧随其后的字母替换字符串中的每个字母?
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"
我必须解决这个问题,我一直在寻找解决方案,但没有成功。我试图通过为字符串中的每个字符获取 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"