【问题标题】:Objective C: What's the easiest way to determine if a substring exists within an NSString?目标 C:确定 NSString 中是否存在子字符串的最简单方法是什么?
【发布时间】:2012-07-13 18:40:52
【问题描述】:

在 PHP(这是我最熟悉的)中,它是一个单行表达式:

strpos('abc', 'b') !== false

Objective C 的等价物是什么?

【问题讨论】:

  • 这有帮助吗? techotopia.com/index.php/…
  • Cocoa 类的文档相当完善。显然,我们鼓励您在需要时随时查看它们。
  • @zneak 我完全同意,但一个简单的问题不一定是一个坏问题——尤其是考虑到一些人对简单问题的解决方案是多么人为。记录简单问题的良好答案对社区有益。恰当的证明(我前几天发表的一篇文章):stackoverflow.com/questions/11439180/… 没有人应该编写与某些糟糕答案相同的代码。记录简单的答案最终是一件好事。

标签: objective-c


【解决方案1】:
[@"abc" rangeOfString:@"b"].location != NSNotFound

【讨论】:

    【解决方案2】:

    我认为类别可以用来很好地打包这样的功能。

    @interface NSString (ContainsString)
    - (BOOL)containsString:(NSString *)string;
    @end
    
    @implementation NSString (ContainsString)
    - (BOOL)containsString:(NSString *)string
    {
        NSRange range = [self rangeOfString:string options:NSCaseInsensitiveSearch];
        return range.location != NSNotFound;
    }
    @end
    

    使用时,意思很清楚。

    if ([@"this is a string" containsString:@"a string"]) {
        …
    }
    

    在大多数项目中,这将是更大的字符串方法类别的一部分,而不是它自己的单一方法类别。

    【讨论】:

      【解决方案3】:
      - (NSRange)rangeOfString:(NSString *)aString
      

      返回值 一个 NSRange 结构,给出位置和长度 aString 第一次出现的接收者。返回 {NSNotFound, 0} 如果 aString 未找到或为空 (@"")。

      您可以在NSString Class Reference中找到更多有用的字符串操作函数

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2013-08-22
        • 2010-10-19
        • 2011-05-22
        • 2010-09-16
        • 2017-05-01
        • 2016-08-05
        • 2010-11-06
        • 2010-10-23
        相关资源
        最近更新 更多