Прямо вперед, как удалить значение массива из строки, пример:
var String = "Hi my name is ftk: [2] what is yours? [ And how are 2 5 you? [1] Are you ok?"
var array = [ "[1]", "[2]" ]
---OUTPUT---
"Hi my name is ftk: what is yours? [ and how are 2 5 you? Are you ok?"
В основном я хочу удалить определенный массив и только тогда, когда это точно такое же слово, если это имеет смысл.
Я пробовал .replace с глобальным, но я не мог использовать там массив, я могу только ввести определенную строку, например:
var string2 = string.replace(/\[1|\]/g, '');
См. выше, я не могу удалить 2 слова одновременно, и было бы действительно отстойно вручную создавать для него новую переменную каждый раз, когда я добавляю определенное слово для удаления, поэтому лучше всего использовать массив.
Заранее спасибо.
Вы можете использовать класс символов, чтобы определить несколько совпадений для удаления. Затем в обратном вызове replace проверьте, встречается ли совпадение в array.
\[[12]]
Пример
var string2 = string.replace(/\[[12]]/g, '');
var string = "[3] Hi my name is ftk: [2][2] what is yours? [ And how are 2 5 you? [1] Are you ok?"
var array = ["[1]", "[2]"];
var string2 = string.replace(
/\[[12]]/g,
m => array.includes(m) ? '' : m
);
console.info(string2);
Ваш код оставляет несколько квадратных скобок, ОП, похоже, хотел удалить именно то, что было в его массиве (включая скобки)
@AdamPearson Именно то, что я хотел, но большое спасибо и за ответ, я ценю это.
@AdamPearson О, да, совпадение не должно быть проиндексировано.
Вы можете просто прокручивать свой массив, заменяя каждый элемент массива по мере продвижения:
let string = "Hi my name is ftk: [2] what is yours? [ And how are 2 5 you? [1] Are you ok?"
let array = [ "[1]", "[2]" ]
for (let i = 0; i < array.length; i++) {
string = string.replace(array[i], '');
}
console.info(string);
@ ftk789 Я обновил код проверкой совпадающего значения в массиве.