CFStringTransform处理语言的强大工具 : 智能地处理用户的输入内容,经典应用场景【索引】

简介: CFStringTransform处理语言的强大工具 : 智能地处理用户的输入内容,经典应用场景【索引】

文章目录

  • 前言
  • I、 CFStringTransform 初识

  • 1.1.1 不同拼写之间的转换
  • 1.1.2 去掉重音和变音符号
  • 1.1.3 找出特殊字符的 Unicode 标准名
  • 1.1 Transform identifiers

  • II、例子:通讯录索引


前言

通过对用户输入内容,利用CFStringTransform变换,可以轻松实现实现一个通用的搜索index

搜索内容可以是多语言的

I、 CFStringTransform 初识

很明显CFStringTransform 是 Core Foundation 中的一部分

/* Perform string transliteration.  The transformation represented by transform is applied to the given range of string, modifying it in place. Only the specified range will be modified, but the transform may look at portions of the string outside that range for context. NULL range pointer causes the whole string to be transformed. On return, range is modified to reflect the new range corresponding to the original range. reverse indicates that the inverse transform should be used instead, if it exists. If the transform is successful, true is returned; if unsuccessful, false. Reasons for the transform being unsuccessful include an invalid transform identifier, or attempting to reverse an irreversible transform.
You can pass one of the predefined transforms below, or any valid ICU transform ID as defined in the ICU User Guide. Note that we do not support arbitrary set of ICU transform rules.
*/
CF_EXPORT
Boolean CFStringTransform(CFMutableStringRef string, CFRange *range, CFStringRef transform, Boolean reverse);

第一个参数CFMutableStringRef:要转换的字符串

第二个参数CFRange 作用范围:NULL,视为全部转换

第三个参数 Transform identifiers->指定要进行什么样的转换

第四个参数reverse:是否采用可逆变换

接下来重点讲解下Transform identifiers

1.1 Transform identifiers

1.1.1 不同拼写之间的转换

Transformation Input Output
kCFStringTransformLatinArabic mrḥbạ مرحبا
kCFStringTransformLatinCyrillic privet привет
kCFStringTransformLatinGreek geiá sou γειά σου
kCFStringTransformLatinHangul annyeonghaseyo 안녕하세요
kCFStringTransformLatinHebrew şlwm שלום
kCFStringTransformLatinHiragana hiragana ひらがな
kCFStringTransformLatinKatakana katakana カタカナ
kCFStringTransformLatinThai s̄wạs̄dī สวัสดี
kCFStringTransformHiraganaKatakana にほんご ニホンゴ
kCFStringTransformMandarinLatin 中文 zhōng wén

kCFStringTransformToLatin 非英文文本转换为拉丁字母

1.1.2 去掉重音和变音符号

  • kCFStringTransformStripCombiningMarks

image.png

1.1.3 找出特殊字符的 Unicode 标准名

  • kCFStringTransformToUnicodeName
    包括 Emoji

”🐑💨✨” 转换成 “{SHEEP} {DASH SYMBOL} {SPARKLES}”,

“🐷” -> “{PIG FACE}”。

II、例子:通讯录索引

image.png

  • StringTransform4Index源码
- (NSString *)pinyin{
    NSMutableString *str = [self mutableCopy];
    CFStringTransform(( CFMutableStringRef)str, NULL, kCFStringTransformMandarinLatin, NO);//先转换为带声调的拼音
    CFStringTransform((CFMutableStringRef)str, NULL, kCFStringTransformStripDiacritics, NO);//去掉音标
    return [[str stringByReplacingOccurrencesOfString:@" " withString:@""] lowercaseString];//小写
}


目录
相关文章
|
2月前
|
Python
潮玩元宇宙游戏开发基础示例规则解析
# 潮玩角色类 class ToyCharacter: def __init__(self, x, y): self.x = x self.y = y self.image = pygame.Surface([50, 50]) self.image.fill(RED) self.rect = self.image.get_rect() self.rect.x = x self.rect.y = y self.change
|
2月前
|
机器学习/深度学习 数据处理 API
视觉智能平台常见问题之通用图像打标位置报警告如何解决
视觉智能平台是利用机器学习和图像处理技术,提供图像识别、视频分析等智能视觉服务的平台;本合集针对该平台在使用中遇到的常见问题进行了收集和解答,以帮助开发者和企业用户在整合和部署视觉智能解决方案时,能够更快地定位问题并找到有效的解决策略。
视觉智能平台常见问题之通用图像打标位置报警告如何解决
|
2月前
|
数据采集 人工智能 自然语言处理
ChatGPT系统课程 - 提示词的重点使用场景之内容总结和内容提取
ChatGPT系统课程 - 提示词的重点使用场景之内容总结和内容提取
|
8月前
|
机器学习/深度学习 自然语言处理 安全
【网安专题11.8】14Cosco跨语言代码搜索代码: (a) 训练阶段 相关程度的对比学习 对源代码(查询+目标代码)和动态运行信息进行编码 (b) 在线查询嵌入与搜索:不必计算相似性
【网安专题11.8】14Cosco跨语言代码搜索代码: (a) 训练阶段 相关程度的对比学习 对源代码(查询+目标代码)和动态运行信息进行编码 (b) 在线查询嵌入与搜索:不必计算相似性
206 0
|
2月前
|
小程序 前端开发 JavaScript
视觉智能平台常见问题之调用多器官分割服务时提示所示报错如何解决
视觉智能平台是利用机器学习和图像处理技术,提供图像识别、视频分析等智能视觉服务的平台;本合集针对该平台在使用中遇到的常见问题进行了收集和解答,以帮助开发者和企业用户在整合和部署视觉智能解决方案时,能够更快地定位问题并找到有效的解决策略。
|
7月前
|
C++
3D模型在线转换工具
NSDT 3Dconvert是一个可以进行3D模型格式转换的在线工具,并支持GLTF、GLB、OBJ、STL、STP、IGS、FBX、IFC、DXF等3D模型在线预览和转换成果下载。
381 1
3D模型在线转换工具
|
人工智能 otter 测试技术
280万条多模态指令-响应对,八种语言通用,首个涵盖视频内容的指令数据集MIMIC-IT来了
280万条多模态指令-响应对,八种语言通用,首个涵盖视频内容的指令数据集MIMIC-IT来了
120 0
280万条多模态指令-响应对,八种语言通用,首个涵盖视频内容的指令数据集MIMIC-IT来了
|
数据挖掘
2-华大时空组学分析软件 Spateo 空转数据基础分析用法示例
本分分享了使用华大时空组学分析软件 Spateo进行聚类、DE等简单空间转录组分析的用法示例,以供参考
847 1
|
编解码 自然语言处理 数据可视化
MIM方法为什么简单高效?可视化和大规模实验给出了答案
MIM方法为什么简单高效?可视化和大规模实验给出了答案
149 0
MIM方法为什么简单高效?可视化和大规模实验给出了答案
|
算法 开发工具 图形学
引擎只是工具,游戏才是目的
嗨!大家好,我是小蚂蚁。 很多朋友都知道我做了一门专门面向新手的游戏开发课程,在这个课程中使用的是微信小游戏制作工具。有不少人问过我,为什么要选用这个工具,而不去使用那些比较成熟的游戏引擎
87 0