首页 > 解决方案 > 如何在 Swift 中匹配带有重音符号(十六进制代码格式)的字母及其类似的英文字母?

问题描述

我正在创建一个需要从 XML 文件中检索播放器信息的应用程序。我基本上已经完成了解析部分,但现在遇到了这个问题。

格式示例如下:

<P id="4336" f="Luka" s="MODRI&#x106;" d="1985-09-09" h="174" w="65" i="4336.png"/>

(我的逻辑是将数据中的名字和姓氏与用户输入进行比较,然后从 XML 文件中提取数据。)当用户输入“Luka Modric”时,我需要检索数据,但我知道很难将“MODRIC”与"MODRIĆ" 或"MODRI&#x106;". 有没有更好的解决方案可以实现我的目标?谢谢。

标签: swiftxmlstringhexcomparison

解决方案


假设您将 html 转义序列 ( &#x106;) 处理为字符串转换,您可以将变音符号从玩家名称转换为拉丁字符,并根据这些进行比较:

let playerName = "Luka Modrić"
let normalizedPlayerName = playerName.folding(options: .diacriticInsensitive, locale: nil)
let isLukaModric = normalizedPlayerName.caseInsensitiveCompare("luka modric")
print(normalizedPlayerName, isLukaModric.rawValue) 

上面的代码打印出“Luka Modric 0”,0 代表相等的字符串。


推荐阅读