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时,容易出现奇怪的编码,所有只做检测,没做提取字符串。

  • 相关阅读:
    JavaScript教程——JavaScript 的基本语法(标识符)
    ECMAScript 6 入门——ES6 声明变量的六种方法
    JavaScript教程——数据类型概述
    对称机密算法与非对称机密算法
    C语言提高 (2) 第二天 用指针对字符串进行操作
    C语言提高 (1) 第一天 数据类型本质与内存四区
    关于内存地址和内存空间的理解(转)
    为什么对数组处理的函数需要传递数组长度
    Unicode编码,解释UCS、UTF、BMP、BOM等名词
    上海
  • 原文地址:https://www.cnblogs.com/xjf125/p/12762982.html
Copyright © 2011-2022 走看看