Как разбить строку на несколько точек с запятой javascript - PullRequest
1 голос
/ 26 апреля 2020

У меня есть строка, подобная приведенной ниже

var exampleString = "Name:Sivakumar ; Tadisetti;Country:India"

Я хочу разбить строку над точкой с запятой, поэтому хочу массив, например

var result = [ "Name:Sivakumar ; Tadisetti", "Country:India" ]

Но так как имя содержит еще одну точку с запятой, я получаю массив вроде

var result = [ "Name:Sivakumar ", "Tadisetti", "Country:India" ]

Здесь Sivakumar ; Tadisetti значение ключа Name

Я просто написал код, подобный exampleString.split(';') ... кроме этого, я не смог понять, что делать дальше, чтобы получить желаемый результат. Любые предложения?

Logi c для разделения : я хочу разделить строку как массив с key:value пар

Ответы [ 2 ]

2 голосов
/ 26 апреля 2020

Поскольку .split также принимает регулярные выражения, вы можете использовать такое, которое соответствует точкам с запятой, за которыми следуют только символы алфавита c, заканчивающиеся на : (, если за ними следует другой ключ )

/;(?=\w+:)/

var exampleString = "Name:Sivakumar ; Tadisetti;Country:India";
var result = exampleString.split(/;(?=\w+:)/);
console.log(result)
1 голос
/ 26 апреля 2020

- это подход, который сначала разбивает входные данные на ;, а затем объединяет элемент без : с предыдущим; так как это не должно быть плюнуло.

let exampleString = "Name:Sivakumar ; Tadisetti;Country:India"
let reverseSplited = exampleString.split(";").reverse();

let prevoiusString;
let regex = /[^:]+:.*/;

let result = reverseSplited.map( str => {
  if(regex.test(str)) {
    if(prevoiusString){
     let returnValue = str + ";" + prevoiusString;
     prevoiusString = null;
     return returnValue
    }
    return str
  }
  prevoiusString = str;
}).filter(e=>e);


console.log(result);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...