OC-NSString中,写了一个在母串中查找子串的位置,但是检索的信息有遗漏,请问是哪儿出现了问题?

    NSString * motherstr = @"w is w is w";
    NSString * sonstr = @"w";
    NSRange range = [motherstr rangeOfString:sonstr];
    while(range.location != NSNotFound)
    {
        NSLog(@"start = %@",NSStringFromRange(range));
        NSRange temp = NSMakeRange((range.location + range.length), (motherstr.length-(range.location+range.length)));
        range =[motherstr rangeOfString:sonstr options:NSBackwardsSearch range:temp];
    }

查找的时候只找到了开头和结尾中的w,中间的包含的子串字符并没有找到,想了很久也没想出来为什么,求大神告知。

NSString * motherstr = @"a is a , so a not equal b";
NSString * sonstr = @"a";
NSRange range = [motherstr rangeOfString:sonstr options:NSBackwardsSearch range:NSMakeRange(0, motherstr.length)];
//循环检索
while(range.location != NSNotFound)
{
NSLog(@"start = %@",NSStringFromRange(range));
NSUInteger start = 0;
NSUInteger end = range.location;
NSRange temp = NSMakeRange(start,end);
range =[motherstr rangeOfString:sonstr options:NSBackwardsSearch range:temp];
}
总算解决了,写的不咋滴,希望大家赐教...

应该是你的range定义的不对

range由temp来提供,后面我调试的时候,观察了temp的范围,那个检索范围并没有问题。不知道为什么。

NSString *string1 = @"This is a string";
NSString *string2 = @"string";
NSRange range = [string1 rangeOfString:string2];
int location = range.location;
int leight = range.length;
NSString *astring = [[NSString alloc] initWithString:[NSString stringWithFormat:@"Location:%i,Leight:%i",location,leight]];
NSLog(@"astring:%@",astring);
[astring release];


//字符串查找

void Find(){

    NSString *str=@"123ABC123Acbc";

    NSLog(@"%i",[str hasPrefix:@"1123"]);//是否匹配指定的字符串开头

    NSLog(@"%i",[str hasSuffix:@"cbc1"]);//是否匹配指定的字符串结尾



    NSRange range=[str rangeOfString:@"123"];//指定的字符串从左往右匹配(系统默认)。

    NSLog(@"%@",NSStringFromRange(range));

    //指定的字符串从右往左匹配

    NSRange range1=[str rangeOfString:@"123" options:NSBackwardsSearch];

    NSLog(@"%@",NSStringFromRange(range1));



}



int main(int argc, const char * argv[])

{

    @autoreleasepool {

        Find();



    }

    return 0;

}

你后面的那个range是从后往前搜索么?
我object c 也不是很熟