@lexchz

Возможно ли сделать невидимую метку для символа в строке?

Суть проблемы: есть строка вида
let pattern = '...XX....XX.............X.......';
где вместо точек могут быть любые буквы, в том числе и X. Количество символов вместо точек также может быть абсолютно разным.
Нужно получить символы, исключая все X из начального варианта строки.

Что я делал:
Добавлял к каждому X изначальной строки, невидимый символ U+200D, и затем парсил видоизменённую строку:
regex = new RegExp(this.regex.source + "\u200D", "g"),
val = input.value.replace(regex, ''),
chars = val.split('').filter(char => this.regex.test(char));

Вроде OK, но вариант с лишним символом не подходит.
Возможно ли как-то другим образом пометить X в начальной строке?
  • Вопрос задан
  • 80 просмотров
Пригласить эксперта
Ответы на вопрос 1
@syntaxorange
Я бы использовал индексы исключающих символов `X` в качестве меток исходной строки.

const pattern = '...XX....XX.............X.......';
const parseStr = '...XX....XX.....X.......X...XX.X.';

const indices = pattern.split('').map((v, i) => v === 'X' ? i : '').join('');
const result = parseStr.split('').filter((v, i) => !~indices.search(i) ).join('');
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы
Artezio Нижний Новгород
от 130 000 до 180 000 ₽
Artezio Москва
от 160 000 до 220 000 ₽
Intspirit Краснодар
от 80 000 до 150 000 ₽