Значение массива, разделенное запятой - исключить пробел в конце каждого текста - PullRequest
0 голосов
/ 03 марта 2020

Приведенный ниже код работает нормально, как и ожидалось.

var str = "South Georgia and The South Sandwich Islands,Congo, Democratic Republic,Mauritania,Finland";
var res = str.match(/\w.*?\w(?=,\w|$)/g);
console.log(res)

Однако некоторые из наших создателей контента обновляли контент с пробелом в конце каждого значения (например, 'United States '), и оно не разделялось.

Объединяет United States , United Kingdom. Слияние текстового значения с запятой не должно происходить, если в конце каждого значения есть пробел.

Я не уверен, как решить эту проблему. Пожалуйста, предоставьте инструкции по этому вопросу.

var str = "Congo, Democratic Republic,United States ,United Kingdom,Finland";
var res = str.match(/\w.*?\w(?=,\w|$)/g);
console.log(res)

Ответы [ 2 ]

2 голосов
/ 03 марта 2020

Вам необходимо включить \s* в поле зрения, чтобы обнаружить и удалить пространство, если оно существует. Попробуйте это:

var str = "Congo, Democratic Republic,United States ,United Kingdom,Finland";
var res = str.match(/\w.*?\w(?=\s*,\w|$)/g);
console.log(res)

Стоит отметить, что полагаться на то, что пользователь вводит данные в точном формате, вызывает проблемы. Я бы предложил использовать для этого что-то вроде тега, который предоставит значения в сериализуемом формате, который не является двусмысленным.

0 голосов
/ 03 марта 2020

Регулярное выражение

/ *,(?! )/

будет разбивать строку на ноль или более пробелов, за которыми следует запятая, при условии, что за запятой не следует пробел, (?! ) является отрицательным прогнозом .

Использование этого регулярного выражения для разделения второй строки, указанной в вопросе, приводит к массиву:

[”Congo, Democratic Republic”, “United States“, “United Kingdom”, “Finland“]

demo

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