iphone - 在韩语字素簇内搜索或比较

标签 iphone objective-c utf-8 nsstring utf-16

在我当前的 UISearchBarController 实现中,我在 filterContentForSearchText:scope: 委托(delegate)方法中使用 [NSString compare:] 来返回当您开始输入时,相关对象会根据它们的名称属性添加到结果 UITableView 中。

到目前为止,这在英语和韩语中效果很好,但我希望能够在 NSString 定义的字符簇中进行搜索。这仅适用于少数几种语言,韩语就是其中之一。

在英语中,compare: 在您输入每个字母后返回新结果,但在韩语中,结果是在您完成识别的字素簇后生成。我希望能够通过构成音节的各个元素来搜索我的韩语对象名称属性。

谁能阐明如何处理这个问题?我确定它与手动搜索 UTF16 字符或使用较低级别的类有关。

干杯!

这是一个不起作用的具体示例:

`NSString *string1 = @"이"; 
`NSString *string2 = @"ㅣ";
NSRange resultRange = [[string1 decomposedStringWithCanonicalMapping] rangeOfString:    [string2 decomposedStringWithCanonicalMapping] options:(NSLiteralSearch)];

结果总是 NSNotFound,有或没有 decomposedStringWithCanonicalMapping

有什么想法吗?

最佳答案

我不是专家,但我认为您不太可能找到一个干净的解决方案来满足您的需求。韩文字符的 Unicode 值与其组成的字素之间似乎没有任何关系。

例如“이”是\uc774,“ㅣ”是\u3163。从 NSString 的角度来看,它们只是两个不同的字符,彼此之间没有特定的关系。

我怀疑您必须找到或创建字符与其字素之间的显式映射,然后编写您自己的查询函数来查询此映射。

This very long page on Unicode Korean如果涉及到这一点,可以帮助你。它有一个包含所有字符的表,表明字符编号方式及其组成部分之间存在某种结构化关系。

关于iphone - 在韩语字素簇内搜索或比较,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2106980/

相关文章:

iphone - 释放 UIViewControllers 和 LLVM 静态分析

iphone - 带有特定地点路线的离线 map

iphone - 由于未捕获的异常 'NSInvalidArgumentException' 而终止应用程序,原因 : '-[__NSCFType next]: unrecognized selector sent to instance '

iphone - ScrollView 未在 xib 文件中滚动

ios - 从 MoreNavigationController 中删除 tableView 中的额外行

ruby-on-rails - Encoding::UndefinedConversionError -ASCII-8BIT to UTF-8 ruby​​ on rails

ios - 前锋准备进入无限循环

ios - 横向模态模式在关闭时切换为纵向模式

PHP 导入带有 utf-8 重音符号的 CSV

ruby - 使用 Gems 时尾随 UTF-8 八位字节无效