目录

  • 介绍
  • 问题出现
  • 问题分析
  • 解决方法
    • 优化
  • 实现
  • 总结

介绍

大家好,我是清风。今天给大家分享一个项目中遇到问题解决问题的案例,编程其实就是一个思考的过程,缺少思考就没有灵魂,遇到问题先静下心去思考,想到方法后再去实践。我们要学会灵活变通去解决问题,掌握方法,这样才能举一反三,临危不乱,遇到所有问题都能很好地去解决。

事情是这样的,做的一个答题小程序,要求在后台编辑题目,编辑题目是用的textarea文本域,即输入的是文本内容,配置之后小程序里查询显示后台配置的题目列表。

当然在测试时后台去配置文本内容,小程序显示是没有问题的。因为配置的题目是纯文本,小程序里也是直接在text里显示的,没有问题。

后台配置题目

小程序显示题目

问题出现

问题往往只有在用的时候才会发现,用户或管理员的各种操作才能显现出各种问题。现在小程序里已经不能正常显示了,有些显示的是html格式富文本格式,有些不显示。显然和需求大相径庭,已经出现问题了。

问题分析

如上图,在用的时候因为是从word文档里直接复制过去的题目(事先在word里整理好了题目,由于各部门工作对接,先是在word文档进行审核),直接复制会把富文本内容也携带过去,携带过去的当然也有style样式,小程序里不显示的原因是富文本的字体颜色是黑色字体,和小程序面背景都是黑色,导致看不到文字。打开控制台调试,问题确实是这么出现的。

word文档编辑的题目会出现不同的富文本的样式格式,这都会导致小程序的不正常显示。

富文本的文字颜色是黑色,这导致的小程序页里题目的不显示。

解决方法

既然后台有可能出现富文本,我们直接把小程序题目的渲染方式换成富文本渲染,这样就算是纯文本也可以显示的。而第二个问题,由于小程序页面背景颜色是黑色,所以题目的字体颜色不能是黑色,我们做一个查找替换,把style样式里的字体样式替换掉就可以了。

优化

样式可能是各种各样的,通过查找style样式里的字体样式考虑的匹配太多了,比如说color属性值可以是rgb形式,也可是rgba形式,也可能是#号颜色值形式,还有可能是英文形式颜色,所以不可取。我们换一种思路,直接把style属性替换掉,即查找到style,换成一个无效的属性名。案例中我们替换成了cc是一个无效的属性,不会触发节点的查找和计算。

replace函数

我们用到replace函数,replace()方法用于在字符串中用一些字符替换另一些字符,或替换一个与正则表达式匹配的子串。

参数

  1. regexp/substr,必需。规定子字符串或要替换的模式的 RegExp 对象。
  2. replacement,必需。一个字符串值。规定了替换文本或生成替换文本的函数。

请注意,regexp/substr 是一个字符串,则将它作为要检索的直接量文本模式,而不是首先被转换为 RegExp对象,返回值是一个新的字符串,是用 replacement 替换了 regexp 的第一次匹配或所有匹配之后得到的。

实现

replace() 方法用于在字符串中用一些字符替换另一些字符,或替换一个与正则表达式匹配的子串。

 that.setData({_list: res.data})let data = that.data._listdata.forEach((element, index) => {var stemContent = '_list[' + index + '].stemContent'that.setData({[stemContent]: element.stemContent.replace(/style/g, 'c')})element.choiceTopicVos.forEach((item, i) => {var listCheck = '_list[' + index + '].choiceTopicVos[' + i + '].optionDes';that.setData({[listCheck]:  item.optionDes.replace(/style/g, 'c')})})})

用到的replace函数,进行了字符串的查找替换,查找到style属性,把它替换到了无效的属性c,没有了样式属性,从而达到了去除内联样式的效果,经过调试,完美解决问题。

总结

这是一个小问题,我为什么要拿出来说呢?抛去开发的测试流程不说,我认为它能引发一些思考。写代码的过程必须是一个思考的过程,怎么样更好地去实现效果,怎么样更简单有效地解决问题,怎么样优化,要去考虑一个大的方面。善于发现问题,解决问题,并不是说用了什么高级语言就鄙弃了思考,机器语言是相通的,开发中各种各样地应用才是魅力所在。编程是一门是艺术,最重要的是你怎样去巧妙地运用,就像解一道数学题,精绝巧妙的解法会让人眼前一亮,增色太多。同样都做出来了,但是你做的就显得十分优雅!

方法都是思考出来的,能高效解决问题的方法就是好方法,大家如果还有更好的解决方法欢迎评论区留言

缺陷修改实践——replace函数的运用|思考?相关推荐

  1. python replace函数_Python3 replace()函数使用方法

    描述 replace() 方法把字符串中的 old(旧字符串) 替换成 new(新字符串),如果指定第三个参数max,则替换不超过 max 次. 语法replace()方法语法: str.replac ...

  2. 正则表达式懒惰贪婪和replace函数

    最近项目中一个简单的需求是,要把如下格式的一段文字 abc{1220}cde{2222}def{cccc} 替换成 abc{1}cde{2}def{3} 也就是把{}匹配到的内容,用匹配的索引替代掉. ...

  3. python 字符串replace函数_01-Python里字符串的常用操作方法--replace()函数

    1. replace()  函数 作用: 替换字符串 语法: replace('需要替换的子串', '新的子串', '替换的次数(可不传)') # 当替换次数不传时,默认全部替换 实例一: mystr ...

  4. SQL中replace函数

    昨天做修改操作时用到了replace函数 --备份表 create table ac01_20150105 as select * from ac01; create table ac01_dy_20 ...

  5. python replace函数 成功 失败_解决python replace函数替换无效问题

    解决python replace函数替换无效问题 python replace函数替换无效问题 str = "hello,china!" str.replace("hel ...

  6. html5 replace,js replace函数用法详解

    如何正确使用js replace函数呢? 例如,str = str.replace(",", "\\"); 只替换第一个遇到的",". 一, ...

  7. [Err] 42000 - [SQL Server]参数数据类型 text 对于 replace 函数的参数 1 无效。

    原执行sql: 在content列,修改test111111为testStr2222222 update t_table set content= replace(content,'test11111 ...

  8. python replace函数用法_python pandas replace函数

    在处理数据的时候,很多时候会遇到批量替换的情况,如果一个一个去修改效率过低,也容易出错.replace()是很好的方法. 1.基本结构: df.replace(to_replace, value) 前 ...

  9. oracle replace更新,Oracle replace函数使用

    需求是要修改Oracle某列表中把这一列中全部的100换成200: update b_nodes a set a.childs=replace((select childs from b_nodes ...

最新文章

  1. 只要努力搞,没有KPI搞不垮的团队?
  2. 实用Java程序设计教程_java程序设计实用教程 书中代码.pdf
  3. Pixhawk代码分析-姿态解算篇A
  4. P3932 浮游大陆的68号岛
  5. openssl 添加自定义算法_GitHub:用PyTorch实现17种深度强化学习算法
  6. 赤虹JSON模块 v1.0 麻雀虽小, 五脏俱全
  7. java中html5表格_java:HTML(table表格,ul列表)和CSS(导入.css文件,三种定义颜色方式,三种样式选择器,a标签属性顺序,)...
  8. notice!!!!!!!!!!
  9. [置顶] 63行代码完美实现html5 贪吃蛇游戏
  10. 《高质量程序设计指南——C++/C》重印啦!
  11. VB6.0超级模块-内存操作篇-含特征码搜索和HOOK跳转构造
  12. android 炫飞 打印机,手机拍照打印机推荐 佳能炫飞CP1200打印机介绍【详解】
  13. 连接服务器显示句柄无效,win10打印机句柄无效怎么解决?_网站服务器运行维护,win10,打印机,句柄无效...
  14. 核磁共振三维重建(视频)
  15. A detailed derivation for the Bias Variance tradeoff Decomposition
  16. 如何在Excel中进行趋势分析
  17. LRS+XAPI教育学习记录(安装lrs,以及用xapi传输数据到lrs)
  18. 财路网每日原创推送:区块链行业没有大佬
  19. 如何修改textfield的 return 键的类型
  20. 美团面试 java后端开发

热门文章

  1. bugku-post
  2. 数据结构(数组结构、链表结构)
  3. Linux (redhat)封装虚拟机镜像
  4. Mockito的简单使用
  5. [Linux]在Linux上部署Java开发环境笔记(一)-- 补充:Linux下如何手动设置IP及配置DNS服务
  6. 计算机网络双语常用词汇,计算机网络协议词汇Protocols
  7. Ubuntu20中使用AirSim--亲测可用
  8. 比较 Java 枚举成员:== 或 equals()?
  9. c语言间隔输出菱形图案,c语言输出菱形图案
  10. 【1024面试必备】厂长爆肝万字之多线程高并发JUC编程⭐建议收藏