如果我想从NSString @"value:hello World:value"中获取一个值,我应该使用什么?

我想要的返回值是@"hello World".

推荐答案

Option 1:

NSString *haystack = @"value:hello World:value";
NSString *haystackPrefix = @"value:";
NSString *haystackSuffix = @":value";
NSRange needleRange = NSMakeRange(haystackPrefix.length,
                                  haystack.length - haystackPrefix.length - haystackSuffix.length);
NSString *needle = [haystack substringWithRange:needleRange];
NSLog(@"needle: %@", needle); // -> "hello World"

Option 2:

NSRegularExpression *regex = [NSRegularExpression regularExpressionWithPattern:@"^value:(.+?):value$" options:0 error:nil];
NSTextCheckingResult *match = [regex firstMatchInString:haystack options:NSAnchoredSearch range:NSMakeRange(0, haystack.length)];
NSRange needleRange = [match rangeAtIndex: 1];
NSString *needle = [haystack substringWithRange:needleRange];

不过,对于你这件小事来说,这件事可能有点过头了.

Option 3:

NSString *needle = [haystack componentsSeparatedByString:@":"][1];

这个函数在拆分时创建三个临时字符串和一个array.


所有代码段都假定搜索的内容实际上包含在字符串中.

Objective-c相关问答推荐

Objective-C:为什么[对象复制]的两个请求返回相同的结果?

将 NSInteger 转换为 NSIndexpath

如何在没有 Interface Builder 的情况下创建 Cocoa 接口?

将 HEX NSString 转换为 NSData

Objective C for循环中断并继续

NSTimeZone:localTimeZone 和 systemTimeZone 有什么区别?

NSLocalizedString 格式

如何获取 AppIcon 的 UIImage?

适用于 ios 的 360° 全景库

将 NSArray 转换为 NSDictionary

自定义 UISwitch 和 App Store 批准

无法访问 dispatch_async 中的全局变量:变量不可赋值(缺少 _block 类型说明符)

[NSNull null] 和 nil 有什么区别?

iOS 上 64 位的 BOOL

Xcode 在 iOS 8 中的 Main() 中引发异常,并带有所有异常断点

如何对包含数字的 NSMutable 数组进行排序?

从 UITabBarController 在当前上下文中呈现模态视图控制器后出现黑屏

如何推送两个视图控制器但只为第二个设置动画过渡?

无法在导航栏中心设置titleView,因为返回按钮

将 Xcode 组创建为文件系统文件夹的工作流程