基于NGUI的富文本实现--添加解析和嵌套后的表现

前两天,有位大佬问我这个富文本它支不支持嵌套。 本来就想过开发嵌套功能和解析嵌套功能的富文本,既然这样,索性就干吧。 经过我这两天的奋斗,总算是把这解析和嵌套功能给搞出来了,并且兼容到了之前的富文本之上。 顺便调试了一番,调试过程当然很不顺利,练手作品哪有尽善尽美的,调试过程也顺手修复了很多bug吧! 总结一下,问题出的最多的地方就在解析和容错。 现在这个功能插件虽然好用不少,可依旧还是有很多的bug,有时间或者有哪位热心的朋友一起改吧!

先说一下我解析这块的思路吧!

解析代码的文件组织结构:
文件组织结构

        // 经过分析,发现能够嵌套的类型就只有label和URL类型
        // 先检查txt的开始类型是否是url 或者是 label类型
        // 如果是就这一部分的数据压进栈里,并且剪切出剩下部分的数据,并且解析剩下数据
        // 如果发现不是嵌套类型,就查看栈里面的嵌套类型,并且把嵌套类型的属性复制到这个元素上面。
        // 关键的迭代代码部分 在 DisintegrateUrlAndLabel 里

        // Class RichString 
        public void Disintegrate(string txt)
        {
            txt = txt.TrimStart(' ').TrimEnd(' ');
            if (string.IsNullOrEmpty(txt)) return;

            // 截取自己的那一串字符串
            // 如果是基础类型,就压栈处理,在尾部需要出栈操作
            m_string_type = RichStringTools.CheckType(txt);
            m_text = RichStringTools.SpliteRichStringByType(m_string_type, txt);
            var temp_txt = txt;
            var new_txt = RichStringTools.RemoveRichStringByType(m_string_type, txt, m_text);
            if (m_string_type == RichStringType.Lab || m_string_type == RichStringType.Url) DisintegrateUrlAndLabel(temp_txt, new_txt);
            else DisntegarateOtherSign(new_txt);
        }

        // Class RichString 
        
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值