u013133977
EYRON
采纳率100%
2015-07-21 06:23

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,中间的包含的子串字符并没有找到,想了很久也没想出来为什么,求大神告知。

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 复制链接分享
  • 邀请回答

5条回答

  • u013133977 EYRON 6年前

    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];
    }
    总算解决了,写的不咋滴,希望大家赐教...

    点赞 评论 复制链接分享
  • wangyaninglm shiter 6年前
    
    //字符串查找
    
    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 也不是很熟

    点赞 评论 复制链接分享
  • wangyaninglm shiter 6年前

    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];

    点赞 评论 复制链接分享
  • u013133977 EYRON 6年前

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

    点赞 评论 复制链接分享
  • caozhy 回答这么多问题就耍赖把我的积分一笔勾销了 6年前

    应该是你的range定义的不对

    点赞 评论 复制链接分享