Как распознать экранированные символы ("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, время: 02:31. |