我试图在正斜杠之前添加一个字符串,这是一个场景:当我有一个字符串时: 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)}但看起来,这是一次又一次的迭代循环,似乎工作不完美。帮助将不胜感激!
1 回答
海绵宝宝撒
TA贡献1809条经验 获得超8个赞
你可以试试这个正则表达式模式,它检查/
哪个后面没有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"))
添加回答
举报
0/150
提交
取消