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

最近看了看网上的教程,发现这正则处理文本如此强大,简洁。简单用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;
}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 发现 关注 消息 iOS 第三方库、插件、知名博客总结 作者大灰狼的小绵羊哥哥关注 2017.06.26 09:4...
    肇东周阅读 14,835评论 4 61
  • 推荐几个正则表达式编辑器 Debuggex :https://www.debuggex.com/ PyRegex:...
    木易林1阅读 14,020评论 9 151
  • 几个正则表达式编辑器 Debuggex :https://www.debuggex.com/ PyRegex:ht...
    没技术的BUG开发攻城狮阅读 10,067评论 0 23
  • 卿本芳华任去留, 怎奈风雨阻行舟。 一入厅门愁似海, 两弯颦蹙皱若秋。 遥看穹苍星满目, 把酒壶殇梦难求。 乘风归...
    聆枫絮语阅读 1,216评论 0 0
  • 裸辞了,然后带着不想束缚的的想法儿,来了陌生的城市,想着能做点事儿!可阴差阳错,蜗居了五日,个中滋味自己体会。 第...
    残默阅读 1,517评论 0 0

友情链接更多精彩内容