我需要一个函数来连续用字符 A..J 替换数字 0..9。 我如何在 Swift 3 中编写它? Swift 3 字符串操作太奇怪了:| 我尝试访问字符,然后添加和偏移(移动)字符,但没有成功。
最佳答案
以下是您的问题的可能解决方案,它也是 Unicode 安全的:
let string = "0123456789 abc xyz 9876543210"
// upper case A...J use 65; lower case a...j use 97
let shift = 65
let convertedString = String(string.characters.lazy.map{ char in
Int(String(char)).map{ Character(UnicodeScalar($0 + shift)!) } ?? char
})
说明
想法/问题
将字符串的每个字符映射到另一个(或相同的)字符:0...9 -> A...J,其他一切都保留
实现
出于对大型字符串的性能原因,使用lazy
字符集合。一个不懒惰的人会创建一个中间 Array
。
一个字符到另一个字符的映射经过以下过程:
关于string - 替换swift 3字符串中的字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39493102/