回答
选项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"
选项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];
这一条可能有点过顶你相当琐碎的情况下,虽然。
选项3:
NSString *needle = [haystack componentsSeparatedByString:@":"][1];
这一个创建三个临时字符串和而分裂的阵列。
所有代码段都假定搜索到的内容实际上包含在字符串中。
它在NSAnchoredSearch上哭了...也许NSMatchingAnchored更好。 – Jonny 2017-01-05 09:52:11
这里有一个稍微不那么复杂的答案:
NSString *myString = @"abcdefg";
NSString *mySmallerString = [myString substringToIndex:4];
参见substringWithRange和substringFromIndex
对不起,这不回答这个问题(如何从字符串中获取子字符串)。 – Monolo 2013-04-27 15:42:45
这里有一个简单的功能,可以让你做你在找什么:
- (NSString *)getSubstring:(NSString *)value betweenString:(NSString *)separator
{
NSRange firstInstance = [value rangeOfString:separator];
NSRange secondInstance = [[value substringFromIndex:firstInstance.location + firstInstance.length] rangeOfString:separator];
NSRange finalRange = NSMakeRange(firstInstance.location + separator.length, secondInstance.location);
return [value substringWithRange:finalRange];
}
用法:
NSString *myName = [self getSubstring:@"This is my :name:, woo!!" betweenString:@":"];
如果照亮的话,我可以告诉你我投其他答案的理由。我宁愿写两行代码,而不是六行。 – 2013-11-15 17:01:05
问题是,这两行代码只能解决任何人都不会存在的特定情况 - 甚至可能对于提问者也不存在。 – Garett 2013-11-19 22:39:52
'getSubstring:...'应该被称为'substringInString:...',因为你没有向它传递一个子字符串,而且以'get ...'开头的方法通常需要传递一个缓冲区指针来写入。 'substringFromIndex:'创建一个中间子字符串,这是不必要的,这就是'rangeOfString:options:range:'的用途。最后,通过将不安全的代码片段包装在一个所谓的泛型方法中,您可以屏蔽一个错误:如果分隔符在字符串中存在一次或更少次,则会出现超出范围的异常。 – Regexident 2014-05-07 15:57:00
这里有@Regexident Option 1和@Garett答案的一个小组合,在前缀和后缀之间得到一个强大的字符串切割器,其上有MORE ... ANDMORE字样。
NSString *haystack = @"MOREvalue:hello World:valueANDMORE";
NSString *prefix = @"value:";
NSString *suffix = @":value";
NSRange prefixRange = [haystack rangeOfString:prefix];
NSRange suffixRange = [[haystack substringFromIndex:prefixRange.location+prefixRange.length] rangeOfString:suffix];
NSRange needleRange = NSMakeRange(prefixRange.location+prefix.length, suffixRange.location);
NSString *needle = [haystack substringWithRange:needleRange];
NSLog(@"needle: %@", needle);
使用,这也
NSString *ChkStr = [MyString substringWithRange:NSMakeRange(5, 26)];
注 - NSMakeRange(start, end)
应该是NSMakeRange(start, end- start)
;
- 1. 如何遍历NSString并获取子字符串?
- 2. NSString子串后的子串
- 3. 如何从NSString获取int?
- 4. 如何从NSString获取CGFloat?
- 5. NSString子串
- 6. 从NSString中提取线程的子串
- 7. 从NSString获取特定的字符串
- 8. 如何从NSString获取特定的字符串?
- 9. 如何从NSString获取特定的字符串?
- 10. 从NSString提取子字符串
- 11. NSString提取模式子字符串
- 12. NSString子串检测
- 13. 如何获取NSString的字符?
- 14. 如何获取NSString的NSArray键值?
- 15. 如何从ios中获取Nsstring的值?
- 16. 如何获取Android中的子串?
- 17. 如何获取LPCTSTR的子字符串?
- 18. 从NSString获取普通字符作为子串
- 19. 从NSString获取子字符串直到到达特定单词
- 20. 如何获取两个子串之间的子串?
- 21. 如何在iPhone的NSString中获取并获取URL?
- 22. 如何从NSString获取每一行?
- 23. 如何通过NSString获取类对象
- 24. 如何获取 - [NSString sizeWithFont:forWidth:lineBreakMode:]工作?
- 25. xcode如何从NSURL获取NSString
- 26. 如何获取所有属性 - [NSString sizeWithAttributes:]
- 27. 如何从块中获取NSString?
- 28. 如何从NSInvocation获取NSString结果?
- 29. 如何获取子字符串
- 30. django:如何获取子字符串?
可能重复[在NSstring中搜索](http://stackoverflow.com/questions/3771211/search-within-nsstring)或[使用正则表达式搜索NSString。](http://stackoverflow.com/questions/ 4353834 /搜索通过nsstring使用正则表达式) – 2011-04-15 11:48:33
我投票结束这个问题不清楚你问什么。根本没有任何迹象显示这里到底需要什么。你想只返回'“你好世界”'? 'return @“hello World”'。你想回归冒号之间的内容吗?你想剥离最左边结肠的所有东西,以及右边结肠的所有东西吗?对于这个问题没有明确定义的投入产出标准(正如我们所看到的问题清单,所有问题都可以通过各种方法解决问题)。 – nhgrif 2015-08-25 12:55:05