У меня есть строка, содержащая цветовые escape-последовательности, например:
"white text \x1b[33m yellow text \x1b[32m green text"
Теперь мне нужно заменить все вхождений определенной escape-последовательности. Я получу только последовательность побега, которую я буду искать, вот что у меня есть. Насколько я знаю, единственный способ в JavaScript заменить все вхождения чего-либо - это использовать регулярные выражения.
// replace all occurences of one sequence string with another
function replace(str, sequence, replacement) {
// get the number of the reset colour sequence
code = sequence.replace(/\u001b\[(\d+)m/g, '$1');
// make it a regexp and replace all occurences with the start colour code
return str.replace(new RegExp('\\u001b\\[' + code + 'm', 'g'), replacement);
}
Итак, я получаю escape-последовательность, которую хочу найти, затем использую регулярное выражение, чтобы получить число из этой последовательности, просто для создания другого регулярного выражения, которое будет искать escape-последовательность. Разве нет более простого и приятного пути?