【问题标题】:NSString search whole text for another stringNSString 在整个文本中搜索另一个字符串
【发布时间】:2011-11-26 07:20:17
【问题描述】:

我想在另一个NSString中搜索一个NSString,这样即使第二个不以第一个开头也能找到结果,例如:

例如:我有一个搜索字符串“st”。我查看下面的记录,看看下面是否有任何包含这个搜索字符串,它们都应该返回一个好的结果,因为它们都有“st”。

餐厅

稳定

克尔斯滕

目前我正在做以下事情:

NSComparisonResult result = [selectedString compare:searchText options:(NSCaseInsensitiveSearch|NSDiacriticInsensitiveSearch) range:NSMakeRange(0, [searchText length])];

这仅适用于上例中的“stable”,因为它以“st”开头,而其他 2 则失败。如何修改此搜索以使其对所有 3 都返回 ok?

谢谢!!!

【问题讨论】:

    标签: iphone nsstring compare


    【解决方案1】:

    我知道这是一个旧线程,认为它可能会对某人有所帮助。

    - rangeOfString:options:range: 方法将允许对字符串进行不区分大小写的搜索,并将搜索中的“ö”等字母替换为“o”。

    NSString *string = @"Hello Bla Bla";
    NSString *searchText = @"bla";
    NSUInteger searchOptions = NSCaseInsensitiveSearch | NSDiacriticInsensitiveSearch;
    NSRange searchRange = NSMakeRange(0, string.length);
    NSRange foundRange = [string rangeOfString:searchText options:searchOptions range:searchRange];
    if (foundRange.length > 0) {
        NSLog(@"Text Found.");
    }
    

    更多比较选项NSString Class Reference

    - rangeOfString:options:range: 方法的文档可以在 NSString Class Reference 上找到

    【讨论】:

      【解决方案2】:

      为什么不先谷歌?

      String contains string in objective-c

      NSString *string = @"hello bla bla";
      if ([string rangeOfString:@"bla"].location == NSNotFound) {
        NSLog(@"string does not contain bla");
      } else {
        NSLog(@"string contains bla!");
      }
      

      【讨论】:

      • 感谢所有答案,我确实尝试过谷歌搜索,但不知何故没有得到正确的搜索词,也没有提供有效的答案。也搜索了文档,但是是的,我接受我应该已经更加努力了。
      【解决方案3】:

      比较用于测试小于/等于/大于。您应该改用-rangeOfString: 或其同级方法之一,例如-rangeOfString:options:range:locale:

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2021-11-28
        • 1970-01-01
        • 2013-01-18
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多