zoukankan      html  css  js  c++  java
  • 【iOS】判断字符串是否是url及从字符串中提取url

      1、判断字符串是否是url

    - (BOOL)checkUrlWithString:(NSString *)url {
        if(url.length < 1)
            return NO;
        if (url.length>4 && [[url substringToIndex:4] isEqualToString:@"www."]) {
            url = [NSString stringWithFormat:@"http://%@",url];
        } else {
            url = url;
        }
        NSString *urlRegex = @"(https|http|ftp|rtsp|igmp|file|rtspt|rtspu)://((((25[0-5]|2[0-4]\d|1?\d?\d)\.){3}(25[0-5]|2[0-4]\d|1?\d?\d))|([0-9a-z_!~*'()-]*\.?))([0-9a-z][0-9a-z-]{0,61})?[0-9a-z]\.([a-z]{2,6})(:[0-9]{1,4})?([a-zA-Z/?_=]*)\.\w{1,5}";
    
        NSPredicate* urlTest = [NSPredicate predicateWithFormat:@"SELF MATCHES %@", urlRegex];
    
        return [urlTest evaluateWithObject:url];
    }

      2、提取url

    - (NSArray*)getURLFromStr:(NSString *)string {
        NSError *error;
        //可以识别url的正则表达式
        NSString *regulaStr = @"((http[s]{0,1}|ftp)://[a-zA-Z0-9\.\-]+\.([a-zA-Z]{2,4})(:\d+)?(/[a-zA-Z0-9\.\-~!@#$%^&*+?:_/=<>]*)?)|(www.[a-zA-Z0-9\.\-]+\.([a-zA-Z]{2,4})(:\d+)?(/[a-zA-Z0-9\.\-~!@#$%^&*+?:_/=<>]*)?)";
    
        NSRegularExpression *regex = [NSRegularExpression regularExpressionWithPattern:regulaStr
        options:NSRegularExpressionCaseInsensitive
        error:&error];
    
        NSArray *arrayOfAllMatches = [regex matchesInString:string
        options:0
        range:NSMakeRange(0, [string length])];
    
        //NSString *subStr;
        NSMutableArray *arr=[[NSMutableArray alloc] init];
    
        for (NSTextCheckingResult *match in arrayOfAllMatches){
            NSString* substringForMatch;
            substringForMatch = [string substringWithRange:match.range];
            [arr addObject:substringForMatch];
        }
        return arr;
    }

      3、swift版的检测是否包含url

     let isHasUrl = false
    let regularRange = NSRange(location: 0, length: messageLabel.text!.utf16.count)
                if let detector = try? NSDataDetector(types: NSTextCheckingResult.CheckingType.link.rawValue) {
                    var isHasUrl = false
                    detector.enumerateMatches(in: messageLabel.text!, options: [], range: regularRange) { (textCheckingResult, falgs, nil) in
                        if ((textCheckingResult?.url) != nil) {
                            isHasUrl = true
                        }
                    }
                }

      注:使用swift版本这个,获取字符串中的url时,容易出现奇怪的编码,所有只做检测,没做提取字符串。

  • 相关阅读:
    spring 事务管理
    snmp4j 异步获取节点信息
    snmp4j 过滤错误的节点
    国际化支持
    通过Java反射机制获取对象的方法
    jdk中有哪些包不用自动导入
    位运算符
    spring 从入门到精通 (一)
    命令行工具nslookup查域名DNS服务器
    java/php DES/CBC/PKCS5Padding加密解密算法实现过程
  • 原文地址:https://www.cnblogs.com/xjf125/p/12762982.html
Copyright © 2011-2022 走看看