如何判断一个字符串(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 struct ,the documentation says如果"干草堆"不包含"针",则返回 struct {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相关问答推荐

Flutter应用程序无法使用IOS/Swift的蓝牙核心库发现某些外围设备

SwiftUI拖动手势和内容拖动时的奇怪行为( skip /卡顿)

如何遮罩,动画和添加阴影到CAShapeLayer?

preferredCompactColumn作为NavigationSplitViewColumn.sidebar传递,但仍能在iOS上看到详细信息页面

Flutter 翼项目.升级到XCode 15.0.1`pod install`抛出错误FlutterMacOS.podspec.json 3.13.2的ParserError

使用标头UICollectionViewFlowLayout时的简单SwiftUI视图错误

无法向委托发送数据

SwiftUI - 搜索栏和导航标题之间的空间太大

iOS上从谷歌云存储API不断收到网络连接已丢失的错误信息

比较 `某个协议` 实例时出现编译错误

错误地提取问题的答案选项

如何解决错误 HE0004:无法在 Visual Studio 2022 中加载框架ContentDeliveryServices

UIView 阴影不适用于自定义扩展

一个 SwiftUI 视图中的多个垂直滚动视图

如何在字段包含字典数组的firestore上查询?

通过MatchedGeometryEffect向上滑动视图

实现一个将块用作回调的方法

为什么 Safari 在使用 iOS 6 设备进行远程调试时显示No Inspectable Applications?

如何在键盘上方添加工具栏?

UIGestureRecognizer 阻止子视图处理touch 事件