想显示的样式:
- 前缀_div框_后缀
前缀值data:
businessPrefixE:'inc_',//前缀
suffixE:'_flag'//后缀
ant-design-vue中设置a-input的前缀和后缀,因为ant-design中的a-input前缀参数不能自动追加_来拼接,那我们就传值的时候自己加_。
自定义词根校验组件设置前缀后缀:自定义组件我开发的时候只考虑了传入前缀,组件内部如果传入了前缀就自动给它拼个_来连接,这里是与a-input的差别所在。
因为两者公用的一个前缀,那么传到自定义组件内部的前缀值就需要在传入之前把最后一个_去掉,否则就会显示成了'前缀__',显示成了两个下划线。
- 使用replace替换,会把第一个给替换掉,如果前缀只有一个就没问题
:rootPre='businessPrefixE.replace("_","")'
// 例如: inc_ ==> inc
- 但如果包含了多个下划线,就会显示错误
//例如: inc_accept_ ==> incaccept_
//实际想要的应该是:inc_accept_ ==> inc_accept
解决1:replace使用正则,把最后一个匹配到的_给替换为空
:rootPre='businessPrefixE.replace(/(.*)_/,"$1")'
- 说明:
参数1:正则表达式,要匹配什么字符,/(.*)+这里写要匹配的字符/
,代表最后一个匹配到的
字符。注:如果参数1是个普通字符串
,那它就取到的是第一个匹配到的
字符。
参数2:要替换成什么字符,"$1+要替换成什么字符"
,如果要替换成空(去掉的意思,不是替换成空格)
就写成"$1"
什么也不用加。如果写成"$1 "
,就会替换成一个空格。
解决2:就是字符串截取,去掉最后一位
let pre = 'inc_accept_';
let pre2 = pre.slice(0, pre.length-1);
最好判断下最后一位是_才截取
let pre3 = pre.slice(pre.length-1)=='_'?pre.slice(0, pre.length-1):pre;