【问题标题】:Detecting if NSString contains chinese characters检测 NSString 是否包含中文字符
【发布时间】:2016-02-23 18:00:58
【问题描述】:

我有一个UISearchBar,如果用户输入英文,我希望我的数据按拼音排序,当用户输入汉字时,按字符本身排序。

有没有类似的

if (searchText isKindofClass: UTF-8String) 

检测NSString是否包含汉字?

【问题讨论】:

  • 无论您输入什么字符,字符串的类型都不会改变。

标签: iphone objective-c nsstring


【解决方案1】:

您可以使用NSRegularExpression 搜索“字符族”:

https://developer.apple.com/library/mac/#documentation/Foundation/Reference/NSRegularExpression_Class/Reference/Reference.html

http://userguide.icu-project.org/strings/regexp

他们举了一个\p{script=cyrillic}的例子,我想你稍微搜索一下就会找到与中文有关的东西。

【讨论】:

  • 感谢您的回答!我刚刚使用了"[^a-z]" 并检查了numberOfMatches 是否返回大于零。
  • 这是一种解决方法,但它会匹配 I am 29,但它不应该匹配。
  • 使用\p{script=Han}NSRegularExpression
  • 感谢您的回答。你能提供一个如何做到这一点的例子吗?我查看了NSRegularExpression 上的 Apple 文档,但没有看到类似 isKindofClass: \p{script=Han} 的任何内容 - 谢谢!
【解决方案2】:

如果您使用\p{script=Han}检测中文,请务必在\p之前添加'\'。所以就像

NSRegularExpression *regex = [NSRegularExpression regularExpressionWithPattern:@"\\\p{Script=Han}" options:NSRegularExpressionCaseInsensitive error:&error];

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-09-11
    • 1970-01-01
    • 1970-01-01
    • 2016-03-07
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多