1

我在目标 C 中有以下问题:在更大的上下文中,我想在字符串中搜索子字符串并获取第一个这样的子字符串所在的位置。我也希望从后面开始搜索。例如:通过搜索“K”在“K123K”上调用所需的函数应该得到 3,因为我从后面开始。

在我的代码中,搜索 NSData 对象更有效,因为这是我读入的内容。所以我尝试了一些测试代码,看看我提出的方法是否有效:

    NSString *testString = @"01K234567K";
    NSData *testData = [testString dataUsingEncoding:NSUTF8StringEncoding];
    NSString *testLetter = @"K";
    NSData *kData = [testLetter dataUsingEncoding:NSUTF8StringEncoding];
    NSRange whereisK = [testData rangeOfData:kData options:NSBackwardsSearch      range:NSMakeRange(0, [testData length])];
    NSLog(@"loc: %d, len: %d",whereisK.location,whereisK.length);

结果出乎我的意料,看起来 rangeOfData 仍然从前面开始搜索:

    loc: 2, len: 1

我真的不知道我做错了什么。似乎 NSBackwardsSearch 没有作为一种选择来完成它的工作!我很高兴有任何帮助或建议...

4

1 回答 1

1

该选项的正确值为NSDataSearchBackwards。您使用的选项用于 NSString 搜索。您可以阅读NSData 文档

于 2012-08-06T20:02:35.670 回答