Как разбить строку при сохранении символов границы? - PullRequest
2 голосов
/ 14 января 2020

Я пытаюсь разделить строку в Javascript (с полу json объектами), чтобы разделить на }, {, в то время как я хочу сохранить фигурные скобки, для этого я подумал использовать просмотр назад zerowidth и поиск назад zerowidth как описано здесь

"{}, {a}, {c:d}".split(/(?<=}), ?(?={)/)

В chrome это работает как ожидалось и создает массив из трех строковых элементов с фигурными скобками в начале и в конце, однако в Safari & Firefox это терпит неудачу, потому что регулярное выражение lookbehind не реализовано. Есть ли хороший способ сохранить фигурные скобки с разделением? Я пытался:

"{}, {a}, {c:d}".split(/(}), ?({)/)

Но это разделяет каждый символ.

1 Ответ

2 голосов
/ 14 января 2020

Вы можете использовать string.split(/}, ?(?={)/) (где (?<=}) положительный вид сзади преобразуется в потребляющий }), а затем добавить } к каждому элементу в результирующем массиве, отличному от последнего.

var string = "{}, {a}, {c:d}";
var items = string.split(/}, ?(?={)/);
var result = items.map(function(x,id,arr) {
  return x + (id != arr.length - 1 ? "}" : ""); 
});
console.log(result);
...