swift - 如何在 Swift 中匹配带有重音符号(十六进制代码格式)的字母及其类似的英文字母?
问题描述
我正在创建一个需要从 XML 文件中检索播放器信息的应用程序。我基本上已经完成了解析部分,但现在遇到了这个问题。
格式示例如下:
<P id="4336" f="Luka" s="MODRIĆ" d="1985-09-09" h="174" w="65" i="4336.png"/>
(我的逻辑是将数据中的名字和姓氏与用户输入进行比较,然后从 XML 文件中提取数据。)当用户输入“Luka Modric”时,我需要检索数据,但我知道很难将“MODRIC”与"MODRIĆ" 或"MODRIĆ"
. 有没有更好的解决方案可以实现我的目标?谢谢。
解决方案
假设您将 html 转义序列 ( Ć
) 处理为字符串转换,您可以将变音符号从玩家名称转换为拉丁字符,并根据这些进行比较:
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 代表相等的字符串。
推荐阅读
- javascript - Javascript 色阶从 0% 到 100%,将其从任何颜色渲染到进度条上的任何颜色
- php - 在 Laravel 中通过查询选择计算属性
- .net - 调试时使用 MiniDumpWriteDump() Win32 API 时出现异常
- pandas - python numpy矢量化对象实例数组
- reactjs - 如何从 React 发送 CORS 请求?
- forms - Vuejs v-model 自动转义 html 实体
- javascript - 箭头不从字段中的位置移动
- ios - ARKit 添加了 X 翻转的 2D 视频
- android - Android Studio 3.2.1 一直卡死
- javascript - Chrome 扩展程序:计划通知未重置 chrome 存储上的数据