✍️ 作者简介: 一个每天中午去打篮球和锻炼的前端开发。
🐈⬛ 两只猫🐱和一只狗的铲屎官🐶
🧣 微博: GuoJ阝阝(fu)
项目场景:
需要替换字符串中括号里的内容:
今天遇到一个场景:字符串的名字有一些包含括号,类似“蒸箱(蒸烤一体机)”。这时候括号里的内容意义不大,我准备删掉,但是发生一些小问题,这里记录一下。
问题描述
匹配括号过程中遇到匹配不上的问题
正常情况下,使用value.replace(/\([^\)]*\)/g, "")
就可以成功删除掉括号以及括号里的内容,但是我发现并不能成功处理所有包含括号的名称。
原因分析:
于是我不断试验,终于发现问题:名称中有些括号使用的是英文输入法的括号“()”,有些是中文输入法的括号“()”,这两种需要分别处理。
解决方案:
在这种情况下,由于不确定括号的输入法类型,只能判断所有情况:
(1)、左右括号都是英文输入法
(2)、左右括号都是中文输入法
(3)、左括号是英文输入法,右括号是中文输入法
(4)、左括号是中文输入法,右括号是英文输入法
ellipsisXmlName (value) {
let result = ''
if (!value) return ''
if (value.indexOf('(') >= 0 && value.indexOf(')') >= 0) {
result = value.replace(/([^\)]*)/g, "")
} else if (value.indexOf('\(') >= 0 && value.indexOf('\)') >= 0) {
result = value.replace(/\([^\)]*\)/g, "")
} else if (value.indexOf('(') >= 0 && value.indexOf('\)') >= 0) {
result = value.replace(/([^\)]*\)/g, "")
} else if (value.indexOf('\(') >= 0 && value.indexOf(')') >= 0) {
result = value.replace(/\([^\)]*)/g, "")
} else {
result = value
}
return result
}