Как добавить строку перед косой чертой? - PullRequest
0 голосов
/ 26 сентября 2019

Я пытаюсь добавить строку перед косой чертой, вот сценарий:

Когда у меня есть строка: 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 Ответ

0 голосов
/ 26 сентября 2019

Вы можете попробовать этот шаблон регулярных выражений, который проверяет наличие /, за которым не следует html:, но должно следовать any word character followed by [

\/(?!html:)(?=\w*\[)

enter image description here

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"))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...