在引用之间获取字符串的NSRange?

Sno*_*man 4 iphone objective-c ios

我有一个字符串:

他昨天说"你好伙计".

我想从第一个报价到最后一个报价获得NSRange.所以我尝试过这样的事情:

NSRange openingRange = [title rangeOfString:@"\""];
NSRange closingRange = [title rangeOfString:@"\""];
NSRange textRange = NSMakeRange(openingRange.location, closingRange.location+1 - openingRange.location);
Run Code Online (Sandbox Code Playgroud)

但我不确定如何区分第一个引用和第二个引用.我该怎么做?

Jus*_*Sid 6

您可以使用正则表达式:

NSError *error = nil;
NSRegularExpression *regex = [NSRegularExpression regularExpressionWithPattern:@"([\"])(?:\\\\\\1|.)*?\\1" options:0 error:&error];

NSRange range = [regex rangeOfFirstMatchInString:myString options:0 range:NSRangeMake(0, [myString length]];
Run Code Online (Sandbox Code Playgroud)

不要忘记检查错误;)

  • 好吧它工作正常,但究竟是什么:`@"([\"])(?:\\\\\\ 1 |.)*?\\ 1"`?? (3认同)