如何获取NSString的子字符串?

| 如果要从NSString
@\"value:hello World:value\"
获取值,应该使用什么? 我想要的返回值为is1ѭ。     
已邀请:
选项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];
这将在拆分时创建三个临时字符串和一个数组。 所有代码段均假定搜索的内容实际上包含在字符串中。     
这是一个不太复杂的答案:
NSString *myString = @\"abcdefg\";
NSString *mySmallerString = [myString substringToIndex:4];
另请参见substringWithRange和substringFromIndex     
这是一个简单的功能,可让您执行所需的操作:
- (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:@\":\"];
    
也使用这个
NSString *ChkStr = [MyString substringWithRange:NSMakeRange(5, 26)];
注意-您的
NSMakeRange(start, end)
应该是
NSMakeRange(start, end- start)
;     
这是@Regexident选项1和@Garett答案的一个小组合,可以在前缀和后缀之间使用功能强大的字符串切割器,上面有更多...更多单词。
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);
    

要回复问题请先登录注册