uniapp开发 移动端使用字符串替换注意事项
1. uniapp开发 移动端使用replace注意事项
uniapp replaceAll方式在手机失效是因为安卓环境下不支持replaceAll方法。
在uniapp开发中,如果在安卓环境下使用replaceAll方法,可能会导致页面无法渲染,并且控制台不会反馈错误信息。为了解决这个问题,可以将replaceAll方法换成replace方法。
1.1. 场景描述
在用uni-app开发H5项目时出现了这样的一个问题:
由于业务需要,需要在有渲染后端返回的富文本内容时对内容做一个处理,将域名 dcs-new.cmbchina.cn 替换为 dcs-uat.cmbchina.com:8080,一开始用的是replaceAll的方法,具体写法如下:
//vue文件
this.article = this.article.replaceAll(sysVars.oldPageUrl, sysVars.newPageUrl);//public文件夹下的static文件夹下的js文件夹下的config.js文件window.sysVars = {//旧地址oldPageUrl: 'dcs-new.cmbchina.cn',//新地址newPageUrl: 'dcs-uat.cmbchina.com:8080'
}
1.2. 问题
replaceAll方法并不兼容所有的手机,比如小米手机就会因为使用该方法导致内容无法显示。
1.3. 解决方案
使用正则表达式进行全局替换
在uni-app中,你可以使用正则表达式的全局匹配标志g来替换所有匹配的模式。以下 是一个示例代码
<template><view>{{ text.replace(/\n/g, '<br>') }}</view>
</template><script>
export default {data() {return {text: '这是一段需要换行的文本\n这是换行后的文本'};}
};
</script>
在这个示例中,我们使用了正则表达式/\n/g来匹配文本中的换行符,并将其替换为
标签。