【问题标题】:What Objective-C NSString method need to check if a string is contained in another? [duplicate]什么 Objective-C NSString 方法需要检查一个字符串是否包含在另一个字符串中? [复制]
【发布时间】:2016-10-26 04:20:10
【问题描述】:

NSString 的什么方法检查localizedCaseInsensitiveCompare: keyword 找到的字符串是否包含在另一个字符串中?

NSString *listOfNames = @"anas, ward, qusai, zainab";
NSString *keyword = @"Ward";

if ([listOfNames localizedCaseInsensitiveCompare:keyword]) {
    NSLog(@"\nMatch found!\n");
} else {
    NSLog(@"\nNo match found!\n");
}

【问题讨论】:

  • 我无法将您的问题与代码联系起来。请澄清您的问题。
  • @Eiko 如何返回从listOfNames 找到的实际字符串?这里"Ward"..with大写W.
  • 使用具有正确选项的 rangeOfString: 方法之一,正如@Josh Caswell 所说。给定范围,您可以轻松获取子字符串。

标签: nsstring


【解决方案1】:

localizedCaseInsensitiveCompare 很可能在内部将两个字符串都转换为小写,然后使用本地化排序算法进行比较。

来自文档: “本地化字符串比较基于 Unicode 排序算法,由 CLDR(通用区域设置数据存储库)针对不同语言量身定制。两者都是 Unicode 联盟的项目。Unicode 是 Unicode, Inc. 的注册商标。”

使用listOfNames.lowercaseString之类的东西将每个字符串转换为小写可能是一个合理的做法

【讨论】:

  • 谢谢,但我的意思是......当我搜索病房(小写)时,这里的输出是// Match found!......但我需要更多的是得到// Match found! Ward ..!......这里的Ward是字符串中的实际值。
  • 也许做一个正则表达式匹配?
【解决方案2】:

我假设您的意思是您正在使用localizedCaseInsensitiveContainsString:,因为您引用的方法并没有按照您的意思做。

有一个相应的方法来获取搜索词的范围:-[NSString localizedStandardRangeOfString:]你使用返回的范围来索引回源字符串。

如果您需要使用当前区域以外的区域进行搜索,也可以使用rangeOfString:options:range:locale:

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-02-12
    • 2013-03-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-04-14
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多