Node.js просто пока с String.indexOf не получится - PullRequest
0 голосов
/ 02 апреля 2020

Я прочитал файл XML с помощью fs (файловая система) и преобразовал его буфер в простой длинный объект String, после чего мне нужно найти каждую указанную комбинацию тегов c и добавить небольшой текст, разделяющий строку, но иногда не удается сделать это более 1 раза.

 xmldata = /*STRING OBJECT*/
 var index = 0
    while(index != -1) {
        index = xmldata.indexOf("<description>", index + "<description>".length + "/n".length + "<![CDATA[".length)
        var tempIndex = xmldata.indexOf("<div", index + "<description>".length)
        if (index < tempIndex < index + "<description>".length + "/n".length && tempIndex != -1) xmldata = xmldata.splice(tempIndex - 1, 0, "<![CDATA[")
    }

String.prototype.splice = function(idx, rem, str) {
    return this.slice(0, idx) + str + this.slice(idx + Math.abs(rem));
};

простая запись

<description>
<div class='pdbDescContainer'>

может стать

<description>
<![CDATA[
<div class='pdbDescContainer'>

или подобным

<description>
<![CDATA[<![CDATA[<![CDATA[<![CDATA[<![CDATA[<![CDATA[<![CDATA[<![CDATA[<![CDATA[<![CDATA[<![CDATA[<![CDATA[<![CDATA[
<div class='pdbDescContainer'>

просто я не знаю, почему так происходит случайным образом

...