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/

相关文章:

c - 数组 C 中正整数的和

ios - 通过 CoreData 属性显示 tableView 项目

ios - 为什么没有记录约束标识符?

ios - UITableView willDisplayCell 方法的不当行为

c++ - 如何使用二进制搜索返回姓氏(给定字符串)的第一个索引/出现?

python - 如何基于共现矩阵计算相似度?

python - Numpy 数组 : group by one column, 求和另一个

javascript - 数组数组中字母分配的改进

arrays - 如何通过删除 "()"将我的字符串值更改为数组

python - 按数字最大的顺序对显示的内容进行排序