Objective C - NSRange和rangeOfString

时间:2014-11-13 11:30:47

标签: objective-c nsstring match nsrange

我对NSRange和rangeOfString有一点问题。我想搜索给定字符串中的子字符串,该字符串工作正常,但只是为了找到一个精确的字符串,而我需要找到一个问题,我需要找到一个始终相同且结尾始终相同的子字符串。我已经尝试过类似的东西了:

    match = [strIn rangeOfString: @"truni/begin/*/end"];

但那不起作用。所以我需要一种方法来做到这一点。以下是本准则的具体部分:

    NSRange match;
    match = [strIn rangeOfString: @"turni/begin/sHjeUUej/end"];
    NSRange range = NSMakeRange(match.location, match.length);
    NSString *strOut = [strIN substringWithRange:range];

你看到字符串“turni / begin / sHjeUUej / end”将始终相同,除了“sHjeUUej”部分。希望有人可以帮助我。

提前致谢。

3 个答案:

答案 0 :(得分:1)

使用正则表达式:

- (NSRange)rangeOfString:(NSString *)aString options:(NSStringCompareOptions)mask

选项RegularExpressionSearch

有关创建正则表达式的信息,请参阅ICU用户指南Regular Expressions

答案 1 :(得分:0)

您可以使用前缀/后缀

if ([strIn hasPrefix:@"truni/begin/"] && [strIn hasSuffix:@"end"]) {
   //match

答案 2 :(得分:0)

如果您确保字符串始终以turni/begin/开头并以/end结尾,则可以使用更简单的解决方案。

您可以使用:

NSString *strOut = [[strIn stringByReplacingOccurrencesOfString:@"turni/begin/" withString:@""] stringByReplacingOccurrencesOfString:@"/end" withString:@""];

通过这种方式,您可以只用一行代码和较少的比较来检索另外两个字符串之间的字符串。