Как распознать экранированные символы ("a" vs "\a")?
Всем привет. Как отличить "a" от "\a"?
Если конкретно, мне нужно разбить строку: 'x.y'.split('.'); // ['x', 'y'] А так, не должно разбивать: 'x\.y'.split('.'); // должно быть ['x.y'] Сам сплит можно заменить чем угодно (регуляркой, например). String.raw не предлагать. |
Так "a" от "\a" нужно различить или же "." от "\."?
|
Цитата:
|
вариант
Код:
if re.test(string) then string.split() |
nerv_, проблема в том, что
"string." === "string\." Мне прислали багрепорт, а как пофиксить, без добавления флагов, я пока не понимаю. |
сплитом, похоже, никак.
вот, вариант, в котором есть экранирование точек и "экранирование экранирований" :) var str = "12.34\\.56\\\\.78\\\\\\.90"; var m, rx = /(?:^|[^\\])(?:\\\\)*\./g; var index = 0; var arr = []; while (m = rx.test(str)) { arr.push(str.substring(index, rx.lastIndex - 1)); index = rx.lastIndex; } arr.push(str.substring(index, str.length)); console.log(arr); |
Цитата:
|
Цитата:
так уж мир устроен, что оное есть везде где имеются экранирования. |
Цитата:
Для меньшей жести юзер может использовать String.raw + template strings из ES6, вот так: app.bindNode(String.raw`int\.int`, String.raw`\.int`); Этот код аналогичен такому: app.bindNode("int\\.int", "\\.int"); |
Цитата:
|
Часовой пояс GMT +3, время: 13:18. |