У меня есть строка, содержащая цвет экранирующие последовательности, как это:Регулярное выражение, содержащее управляющую последовательность в JavaScript
"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);
}
Таким образом, я получаю последовательность бежать я хочу найти, то я использую регулярное выражение, чтобы получить число из этой последовательности просто построить еще один регулярное выражение, которое будет искать в последовательности. Разве нет более легкого и приятного пути?
Это выглядит здорово, вы разделяя свой конечный продукт в любом месте? – mrtsherman
Он находится на github через https://github.com/strathausen/culoare и на npm через 'npm install culoare' –
Трудно видеть, что здесь происходит, особенно если вы не знакомы с coffeescript. Примером может служить пример с входными параметрами и выходом. Каково содержание 'o'? Что-то вроде '\ u001b [99m', поэтому' code' содержит только номер? Если да, то вы просто добавляете обратную косую черту перед '[', чтобы сделать это регулярным выражением. Это можно сделать другими способами, но зачем использовать регулярное выражение в этом случае? Вероятно, возможно, 'str.replace o, a'. – Qtax