arrays - Swift:如何替换数组中的大写符号

标签 arrays swift find-occurrences

这是将西里尔字母替换为拉丁字母的代码:

let cyr = ["а", "б", "в", "г", "д", "Б"]
let latin = ["a", "b", "v", "g", "d", "B"]
var original = self.input.text        
for i in 0..<cyr.count {
    let target = cyr[i]
    let destination = latin[i]  
    original = original?.replacingOccurrences(of: target, with: destination, options: String.CompareOptions(rawValue: NSString.CompareOptions.caseInsensitive.rawValue | NSString.CompareOptions.literal.rawValue), range: nil)
    self.output.text = original;

但如果我将它们添加到数组中,它不会将大写符号替换为大写符号。它要么将所有小写字母替换为大写字母,要么将所有小写字母替换为大写字母。如何区分是大写还是小写并分别替换?

最佳答案

当您需要区分大小写的搜索和替换时,您不应使用 caseInsensitive 选项。您的代码也可以简化为

let cyr = ["а", "б", "в", "г", "д", "Б"]
let latin = ["a", "b", "v", "g", "d", "B"]

var text = "абвгдБ"

for (src, dest) in zip(cyr, latin) {
    text = text.replacingOccurrences(of: src, with: dest)
}
print(text) // abvgdB

话虽如此,您真正想要的可能是音译到拉丁语:

let original = "абвгдБ"
let trans = original.applyingTransform(.toLatin, reverse: false) ?? original
print(trans) // abvgdB

关于arrays - Swift:如何替换数组中的大写符号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56072775/

相关文章:

javascript - 验证数组中的一些对象的干净方法是什么?

ios - 访问多维数组的项目缓慢

swift - 如何返回多个字符串?

java - 我想显示字符串中某个字符的出现。我怎样才能改进我的代码?

c++ - 在 C++ 中使用多重函数合并两个链表

Javascript - 如何从数组中获取非零值?

java - 为什么我的循环没有检索到最后的项目?

ios - 找不到目标 'MyCustomFramework' 的模块 'x86_64-apple-ios-simulator' ;找到 : arm64, armv7-apple-ios,arm64-apple-ios,arm,armv7

ios - 来自 PHImageManager 的图像数据不同于保存为 Assets 的图像数据

java - 计算字符串中的出现次数并删除重复项