Разделить строку регулярным выражением
Функция parse принимает строку и массив с символами (y)~["!", "%",...], которыми он отрежет всю правую часть строки: строка "Раз, два!, три" => "Раз, два". Или: "Раз, д%ва!, три" => "Раз, д"
function parse(str, y) {
q = "";
for (i = 0; i < y.length; i++) {
q += y[i];
}
result = str.split("/[" + q + "]+/");
return result[0];
}
Логика следующая, режем строку этими символами и возвращаем [0] элемент строки. Если задать жестко str.split(/[!%]+/), то работает корректно. Если вместo !% поставить переменную, не выходит. Скорее всего, что регулярное выражение становится строкой.
Ответы (3 шт):
Для вашей задачи можно использовать ИЛИ - | знак + в этом случае лишний
"Раз, два!, три".split(/%|!/) // [ "Раз, два", ", три" ]
"Раз, два%, три".split(/%|!/) // [ "Раз, два", ", три" ]
Раз, два!,три%,четыкре".split(/%|!/) // [ "Раз, два", ",три", ",четыкре"]
let aDel = ["!", "%"];
function parse(str, y) {
let rExp = new RegExp(`[${y.join('')}]`);
return str.split(rExp)[0];
}
console.log(parse('Раз, два!, три', aDel));
console.log(parse('Раз, д%ва!, три', aDel));
Спасибо за подсказку. Оказалось что массив можно передавать как есть, тоже работает.
function parse(str, arr) {
regExp = new RegExp(`[${arr}]`);
return str.split(regExp)[0];
}
console.log(parse("s#d!f%sl!dfjskdl df%ks sdf ! dsdf! dsf sd f", ["%", "!", "#"]));