Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Удалить текст в строке +18 символов после него (https://javascript.ru/forum/misc/78829-udalit-tekst-v-stroke-18-simvolov-posle-nego.html)

sovsem-nub 09.11.2019 23:10

Удалить текст в строке +18 символов после него
 
есть строка
var str="null++test alert system1_20191109110452333++test alert system_20191109110452444++test ии аа_20191109110452555"


нужно найти и удалить в ней все "++test alert system1" и 18 символов после каждого найденного. То есть в итоге хочу получить

str="null++test alert system_20191109110452444++test ии аа_20191109110452555"


строка всегда начинается на null

рони 09.11.2019 23:45

sovsem-nub,
let str="null++test alert system1_20191109110452333++test alert system_20191109110452444++test ии аа_20191109110452555";
let txt = "++test alert system1";
let test = "null++test alert system_20191109110452444++test ии аа_20191109110452555"
const escapeRegExp = string => string.replace(/[.*+?^${}()|[\]\\]/g, "\\$&");
const fn = (str, txt) =>{
    const reg = new RegExp( escapeRegExp(txt) + ".{18}", "g");
    return str.replace(reg, "")
}
alert(test == fn(str, txt));

sovsem-nub 10.11.2019 01:52

спасибо! это действительно круто.

долго не мог понять что такое =>, потом txt.replace(/[.*+?^${}()|[\]\\]/g, "\\$&") думал, что это прикол какой-то. Потом понял, что это мои плюсики и другие символы экранирует.


let str="null++test alert system1_20191109110452333++test alert system_20191109110452444++test ии аа_20191109110452555";
let txt = "++test alert system1";
let test = "null++test alert system_20191109110452444++test ии аа_20191109110452555"

 function fn(str, txt){
//   reg = new RegExp(txt.replace(/[.*+?^${}()|[\]\\]/g, "\\$&") + ".{18}", "g");
    return str.replace(/\+\+test alert system1.{18}/g, "")
}
alert(test == fn(str, txt));


Часовой пояс GMT +3, время: 11:22.