是否可以编写一个SWIFT函数来仅替换像👩;👩;👧;👧;这样的扩展字素簇的一部分? [英] Is it possible to write a Swift function that replaces only part of an extended grapheme cluster like 👩👩👧👧?
本文介绍了是否可以编写一个SWIFT函数来仅替换像👩;👩;👧;👧;这样的扩展字素簇的一部分?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我想编写一个可以这样使用的函数:
let 👩👩👧👦 = "👩👩👧👧".replacingFirstOccurrence(of: "👧", with: "👦")
给定how odd both this string and Swift's String
library are,这在SWIFT中可行吗?
推荐答案
使用range(of:options:range:locale:)
解决方案变得非常简洁:
extension String {
func replaceFirstOccurrence(of searchString: String, with replacementString: String) -> String {
guard let range = self.range(of: searchString, options: .literal) else { return self }
return self.replacingCharacters(in: range, with: replacementString)
}
}
首先在实例中查找searchString
的范围,如果找到一个范围,则将该范围替换为replacementString
。否则,该实例将自行返回。而且,由于range(of:)
方法一找到匹配项就返回,因此保证返回的范围是第一个匹配项。
"221".replaceFirstOccurrence(of: "2", with: "3") // 321
"👩👩👧👦".replaceFirstOccurrence(of: "u{1f469}", with: "u{1f468}") // 👨👩👧👦
*为澄清起见,最后一个测试用例将女人-女孩-男孩转换为男人-女人-女孩-男孩。
这篇关于是否可以编写一个SWIFT函数来仅替换像👩;👩;👧;👧;这样的扩展字素簇的一部分?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文