如何判断一个字符串(NSString)是否包含另一个较小的字符串?

我希望能有这样的结果:

NSString *string = @"hello bla bla";
NSLog(@"%d",[string containsSubstring:@"hello"]);

但我能找到的最接近的是:

if ([string rangeOfString:@"hello"] == 0) {
    NSLog(@"sub string doesnt exist");
} 
else {
    NSLog(@"exists");
}

无论如何,这是查找一个字符串是否包含另一个字符串的最佳方法吗?

推荐答案

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

关键是注意,rangeOfString:返回NSRange结构,the documentation says如果"干草堆"不包含"针",则返回结构{NSNotFound, 0}.


如果你使用的是iOS 8或OS X Yosemite,你现在可以做到:(*NOTE: This WILL crash your app if this code is called on an iOS7 device).

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

(这也是它在SWIFT中的工作方式)

?

Ios相关问答推荐

通过MatchedGeometryEffect向上滑动视图

将视图(例如 Text())不透明度设置为 0 或将背景设置为 Color.clear 会导致它不被绘制

在 tableview 中下载图像缩略图时如何提高滚动性能

Flutter:无法构建 iOS 应用程序“ARCHIVE FAILED”,为设备归档时遇到错误

错误:在 iOS 上运行 Flutter 时找不到“Flutter/Flutter.h”文件

Flutter:CocoaPods 的 specs 存储库过时,无法满足依赖关系

错误:安装 cocoapods 时出错:错误:无法构建 gem 原生扩展

从 Xcode 11.1 升级到 Xcode 11.2 后,应用程序因 _UITextLayoutView 而崩溃

如何在 SwiftUI 中创建多行 TextField?

如何在 iOS 上以编程方式截取屏幕截图

Xcode 10.2.1 命令 PhaseScriptExecution 失败,退出代码为非零

6.5" 显示器的应用store 屏幕截图大小是多少?

没有为团队找到具有 iTunes Connect 访问权限的帐户

iPhone 未连接.连接 iPhone 后 Xcode 将继续

在 Swift 中,如何声明符合一个或多个协议的特定类型的变量?

从 WKWebView 获取所有 cookie

DispatchQueue.main.async 和 DispatchQueue.main.sync 之间的区别

如何在 FlatButton 单击时关闭 AlertDialog?

链接器命令失败,退出代码 1(使用 -v 查看调用),Xcode 8,Swift 3

如何将图像放在 UIButton 中文本的右侧?