美文网首页
用正则表达式在字符串中提取第一行字符串作为标题

用正则表达式在字符串中提取第一行字符串作为标题

作者: 桃妲 | 来源:发表于2016-07-22 16:13 被阅读789次

    最近看了看网上的教程,发现这正则处理文本如此强大,简洁。简单用Objective-C语言尝试一下。写了一个小方法,在字符串中提取标题,iphone中的备忘录没有没有输入标题的地方,他默认第一行非空白文本字符为标题。实现这个功能,尝试用C语言对字符处理和OC的NSSting方法处理都不够简洁,用正则则是这样:\s*.*\s*下面是在Objective-C语言中的使用

    //在字符串中提取第一行文本范围
    - (NSRange)extractTitleRangeWithString:(NSString *)containerString{
        /**
         \s 匹配任意的空白符
         *  重复零次或更多次
         .  匹配除换行符以外的任意字符
         组合起来就是,拿到空白字符,任意字符,空白字符的组合了。
         
         这和iphone中备忘录的处理方式相同
         */
        
        NSRegularExpression *regex = [NSRegularExpression regularExpressionWithPattern:@"\\s*.*\\s*"
                                                                               options:NSRegularExpressionCaseInsensitive
                                                                                 error:nil];
        NSTextCheckingResult *result = [regex firstMatchInString:containerString options:NSMatchingReportCompletion range:NSMakeRange(0, containerString.length)];
        
        return result.range;
    }
    

    获取范围后再配合NSString中的方法,实现提取title的功能。

    /**
     提取字符串的标题,忽略前缀后缀空白
     
     @param containerString 需要处理的字符串
     
     @return 标题
     */
    - (NSString *)extractTitle:(NSString *)containerString{
        
        NSRange range = [self extractTitleRangeWithString:containerString];
        //获取第一次以换行结束的字符串
        NSString *resultString = [containerString substringWithRange:range];
        //去除字符串首尾的空格和换行符
        NSString *title = [resultString stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceAndNewlineCharacterSet]];
        return title;
    }
    

    相关文章

      网友评论

          本文标题:用正则表达式在字符串中提取第一行字符串作为标题

          本文链接:https://www.haomeiwen.com/subject/gxuijttx.html