美文网首页
正则检索 替换文字的功能

正则检索 替换文字的功能

作者: Fade1992 | 来源:发表于2019-04-30 16:25 被阅读0次
服务端给的数据.png 上个控制器带入的数据.png

需求说明 就是将文字转换成 表情

  1. 服务端可能给的数据形式
    <img src="https://img.kkbuluo.net/images/emojis/hongdan.png" alt="hongdan" class="face"/>
    转换成表情

2.上个控制器带入的数据形式
(这个本应该是发到服务端的数据形式)但是要带入下个控制器直接形成表情
<emotion image_name="hongdan.png" image_alt="hongdan">hongdan</emotion>

方法说明

利用正则检索 然后做替换 方法简单 写一段正确的正则表达式(我对于正则语法 还没有完全掌握)就只能讲讲demo 中的正则的意思了

如: @"<(img|IMG)(.*?)(/>|></img>|>)"

    NSRegularExpression *regex = [NSRegularExpression regularExpressionWithPattern:@"<(img|IMG)(.*?)(/>|></img>|>)" options:NSRegularExpressionAllowCommentsAndWhitespace error:nil];
    /**
     
     <(img|IMG)(.*?)(/>|></img>|>)
     解释: < 开始 img 或  IMG 后面跟很多的单字符 ? 改变 限定符的贪婪 以 /> 或 ></img> 或 >  结尾 的一个正则表达式
     创建正则表达式对象
     pattern 模式正则匹配模式
     options 正则匹配选项
     */

接着就是字符串的 截取 什么的 获得我需要的 字符串 如 "hongdan" 做了一个字典 保持 再放入数组中 返回
开始操作可变字符串中的数据 吧 字典中的 src 取出 其实是和表情图片资源中有的图片的名字(scr.png) 获得image 在转出成 emoji 在转出 成 可变字符串

        EmojiTextAttachment *attachment = ({
            EmojiTextAttachment *attachment = [EmojiTextAttachment new];
            attachment.image = image;
            attachment.emojiName = imageName;
            attachment.emojiTag = [NSString stringWithFormat:@"<emotion image_name=\"%@\" image_alt=\"%@\">%@</emotion>",[NSString stringWithFormat:@"%@.png",imageName],imageName,imageName];
            attachment.emojiSize = 20;
            attachment;
        });
        
        
        //将emoj转换成可变字符串
        NSAttributedString *imageAttrString = [NSAttributedString attributedStringWithAttachment:attachment];

这个很重要 因为里面 存储了 这个检索到的字符串在原文中的 范围 (range)根据这个开始做 字符串的替换了
totalLengthChanged 这个是用来记录少了多少的字符串长度 这样才能 在 第二次循环中 找到 第二次需要替换的字符串的位置。 NSUInteger lengthChanged = range.length - 1; 因为加入的表情算 1 所以少了的长度是 字符串长度 - 1. 替换完成 后显示

NSTextCheckingResult *item = dict[@"item"];
NSRange range = [item range];

因为两个控制器中的方法是类似的所以不做重复 如果要看 不一样的界面 就请切换 storyboard

1.png

这个是怎么把 main.story 中加入的一个控制器 包装成另一个 story 选中新的控制器 refactor 重新命名


2.png

加上这个 才能 成为 根控制器


3.png

在storyboard 的控制器上直接加一个 导航控制器的方法


关联一个导航栏或标签栏.png

demo地址

相关文章

  • 正则检索 替换文字的功能

    需求说明 就是将文字转换成 表情 服务端可能给的数据形式 转换成表情 2.上个控制器带入的数据形式(这个本应该是发...

  • 正则表达式学习

    一、应用场景 主要用作数据验证、文本替换、内容检索、过滤内容。执行字符串函数无法完成的特殊的匹配拆分替换功能。正则...

  • js对手机号身份证等验证

    使用正则表达式可以进行强大的模式匹配和文本检索与替换功能。 手机号正则验证 ** ^1[3|4|5|7|8]\d{...

  • Day03(正则表达式,demo 电话邮箱注册)

    正则表达式 是有字母数字和一些特殊符号组成的:::用来描述字符模式的对象功能: 模式匹配 文本检索 替换要使用正则...

  • 正则表达式

    正则表达式用来检索,替换符合某个规则的文本 正则表达式的方法 正则的匹配规则:

  • 正则表达式简介

    正则表达式(regular expression)是一种处理字符串的工具,功能十分强大。它通常被用来检索,替换那些...

  • 使用Python验证常见50个正则表达式

    什么是正则表达式? 正则表达式(Regular Expression)通常被用来检索、替换那些符合某个模式(规则)...

  • js正则表达式学习

    正则介绍: 正则表达式:用于匹配规律规则的表达式,正则通常被用于检索、替换那些符合某个模式的文本。 元字符 \d ...

  • 半小时学会正则表达式(上)

    正则表达式(Regular Expression)在代码中常常简写为regex。正则表达式通常被用来检索、替换那些...

  • linux中的正则表达式总结

    概念 Regular Expression,通常用来检索、替换那些符合某个模式(规则)的文本。 基本正则 常用匹配...

网友评论

      本文标题:正则检索 替换文字的功能

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