正则替换url字符串中的值

1、方法一:键和值一起替换

- (NSString *) paramValueOfUrl:(NSString *) url withParam:(NSString *) param value:(NSString *)value{
    
    NSError *error;

    NSString *targetString = [NSString stringWithFormat:@"%@=%@",param,value];

    NSString *regTags = [[NSString alloc] initWithFormat:@"%@=+([\\w]*)",param];

    NSRegularExpression *regex = [NSRegularExpression regularExpressionWithPattern:regTags options:0 error:&error];

    NSString *string = [regex stringByReplacingMatchesInString:url
                                                       options:0
                                                         range:NSMakeRange(0, [url length])
                                                  withTemplate:targetString];

    return string;
}

2、方法二: 值替换

/// 方法二:
- (NSString *) paramValueOfUrl2:(NSString *) url withParam:(NSString *) param value:(NSString *)value{

        NSError *error;
    
        //  (^|&|\\?|#)+%@=+([^&|#]*)(#|&|$) : range 取 [match rangeAtIndex:2]
        //  %@=+([^&|#]*)(#|&|$)   : range 取 [match rangeAtIndex:1]
        //  通过numberOfRanges获取结果数量,然后分别打印获取值 [url substringWithRange:[match rangeAtIndex:i]]
        NSString *regTags = [[NSString alloc] initWithFormat:@"(^|&|\\?|#)+%@=+([^&|#]*)(#|&|$)",param];
        NSRegularExpression *regex = [NSRegularExpression regularExpressionWithPattern:regTags
                                                                               options:NSRegularExpressionCaseInsensitive
                                                                                 error:&error];
    
        // 执行匹配的过程
        NSArray *matches = [regex matchesInString:url
                                          options:0
                                            range:NSMakeRange(0, [url length])];
        for (NSTextCheckingResult *match in matches) {
            NSRange range = [match rangeAtIndex:2];
            NSString *tagValue = [url substringWithRange:range];  // 分组2所对应的串
            if (![value isEqualToString:tagValue]) {
                url = [url stringByReplacingCharactersInRange:range withString:value];
            }
        }
        return url;
}
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Swift1> Swift和OC的区别1.1> Swift没有地址/指针的概念1.2> 泛型1.3> 类型严谨 对...
    cosWriter阅读 11,157评论 1 32
  • 官网 中文版本 好的网站 Content-type: text/htmlBASH Section: User ...
    不排版阅读 4,498评论 0 5
  • 二、数学运算(math)函数2.1算术运算函数2.1.1rand()函数:产生随机数2.1.2abs()函数/la...
    问题饿阅读 3,555评论 1 11
  • 五年,可能只有我自己知道。 我和他是在初三认识的,那时候分班,本来不在一个班的我们被分到了一起。刚开始还不是很熟...
    MemoJ阅读 2,528评论 1 2
  • 1.感恩今天回家时刚好走到车站车就来了,一秒钟都没等,宇宙实在太爱我,赚大啦 2.感恩今天顺利的把所有帐都对好,轻...
    小狐狸娃娃阅读 142评论 0 0