【问题标题】:NSString containString - without whitespaceNSString 包含字符串 - 没有空格
【发布时间】:2014-12-02 15:57:31
【问题描述】:

我正在尝试检查 NSString 是否包含子字符串。但是它不起作用,因为字符串中的单词之间没有空格。例如我需要找出这个字符串中是否存在“hello”:

@"test.hello"

NSString containsString 没有找到它。还有其他解决方案吗?

【问题讨论】:

  • 除非 Apple 对该接口做了一些奇怪的事情,否则 [@"test.hello" containsString:@"hello"] 应该返回 YES
  • @HotLicks 我是这么认为的,但它对我不起作用。我已经接受了有效的答案。

标签: ios nsstring


【解决方案1】:

iOS 8 除了 containsString: 之外,还有一个新方法,localizedCaseInsensitiveContainsString:。

NSString *testString = @"test.hello";
BOOL found = [testString localizedCaseInsensitiveContainsString:@"Hello"];
NSLog(@"%@", found ? @"Yes":@"No"); // prints Yes

【讨论】:

  • 很高兴知道谢谢!但这只是问题的一部分。我不得不将字符串分成组件,因为 containsString 方法搜索字符串的一部分,它们不会在字符串中挑选出字符串(例如,它们无法从 'aaaboaaa' 中获取 'boo')。
  • @kmcgrady,对于您给出的示例,此方法将返回 YES(在 'aaabooaaa' 中查找 boo)。你是说它不会那样做?
  • 抱歉,我不认为它会起作用,但我只是测试了它,它确实起作用了。也比我的解决方案紧凑得多。谢谢!
  • @kmcgrady,你在你的 Xcode 文档中看到过这些方法吗?我只是在 SO 上搜索才找到它们。
  • @rdelmar - 它们不在在线文档中,更糟糕的是,如果您搜索它们,您很容易找到一些同名的第 3 方类别。
【解决方案2】:

更新

这可行,但@rdelmar 的答案要紧凑得多。

/////////////////////////////////////// /////////////////////////////////////////

我在 SO 的其他地方发现了 answer。基本上我必须使用 NSRange 并通过以下方法进行检查:

[string rangeOfString:@"hello" options:NSCaseInsensitiveSearch].location != NSNotFound

在进行检查之前,我还必须拆分字符串。因此,在示例中,单词由句点分隔。我打电话:

NSArray *myArray = [string componentsSeparatedByCharactersInSet:[NSCharacterSet characterSetWithCharactersInString:@"."]];

然后循环遍历该字符串数组进行rangeOfString 搜索。我设置了一个 BOOL,这样一旦找到我的字符串 'hello',它就会停止搜索。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-09-16
    • 2014-11-15
    • 1970-01-01
    • 1970-01-01
    • 2015-01-01
    • 2011-03-11
    • 2012-01-19
    • 1970-01-01
    相关资源
    最近更新 更多