我必须解决这个问题,我一直在寻找一个没有成功的解决方案。我尝试通过为字符串中的每个字符获取unicode
标量来实现此目的,但我无法使其工作。
有人可以帮我实现这种转变吗?
我正在Swift 3
开发。
答案 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:" ")