我正在尝试在正斜杠前添加字符串,这是一种情况:
当我有一个字符串时:
str = "//html:div[@id='ins_storybody']/p[2]/span[1]/h2[3]/p[1]/p[4]"
我想要预期的输出:
//html:div[@id='ins_storybody']/html:p[2]/html:span[1]/html:h2[3]/html:p[1]/html:p[4]
您清楚地看到,我在正斜杠前添加html:
。
注意
如果没有方括号,我不想添加html:
。这是另一个示例:
str = "//html:div[@id='ins_storybody']/p/span[1]/h2/p[1]/p"
预期输出:
str = "//html:div[@id='ins_storybody']/p/html:span[1]/h2/html:p[1]/p"
如您所见,如果没有html:
,我不会添加[1] or []
。
我尝试使用此逻辑:
str = "//html:div[@id='ins_storybody']/p[2]/span[1]/h2[3]/p[1]/p[4]"
var htmlDOM = ['p', 'span', 'h1', 'h2', 'h3', 'h4']
for(var i=0; i<htmlDOM.length; i++) {
q = str.includes('[');
if (q) {
strSlice = str.indexOf(htmlDOM[i]);
newstr = str.slice(0,strSlice) + 'html:' + str.slice(strSlice);
} else {
newstr = str;
}
console.log(newstr)
}
但是看起来,这是一次又一次的迭代循环,似乎并不完美。
将被帮助!
答案 0 :(得分:0)
您可以尝试使用此正则表达式模式,该模式检查/
后面没有html:
,但后面必须跟any word character followed by [
\/(?!html:)(?=\w*\[)
let stringAdder = (str) => str.replace(/\/(?!html:)(?=\w*\[)/gi,"/html:")
console.log(stringAdder("//html:div[@id='ins_storybody']/p[2]/span[1]/h2[3]/p[1]/p[4]"))
console.log(stringAdder("//html:div[@id='ins_storybody']/p/span[1]/h2/p[1]/p"))