Поиск в строке и цитата вокруг вхождения - PullRequest
0 голосов
/ 19 марта 2020

Работа с Javascript Мне нужно иметь возможность искать строку ввода от пользователя и заменять вхождения точки с запятой на запятые. Проблема, с которой я столкнулся, заключается в том, что мне нужно иметь возможность искать в строке любые запятые, которые уже существуют, и цитировать их до последнего и следующего вхождения точки с запятой.

Пример: пользовательский ввод 12345;Joran,Michael;02;17;63 его следует преобразовать в 12345,"Joran,Michael",02,17,63

Мой ключ включает в себя возможность найти запятую в исходной строке var srch = source.includes(",");, и моя замена var converted = source.replace(/;/g, ",");, который работает нормально, просто нужно выяснить, как добраться до последней / следующей точки с запятой, чтобы разместить кавычки.

Использование if / else в зависимости от того, оценивает ли srch значение True - если true, добавьте кавычки, а затем преобразуйте оставшуюся часть строки и верните ее пользователю; если ложь, конвертировать и вернуть.

Я уверен, что есть способ сделать это с помощью регулярных выражений, который просто еще не пришел ко мне, так что любые предложения о том, на что посмотреть, будут великолепны.

Ответы [ 3 ]

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

Разделить строку на ;

.split(';')

, что дает вам массив.

Преобразование элементов, которые включают ',' в "${element}"

.map(s => s.includes(',') ? `"${s}"` : s )

Преобразование массива обратно в строку

.join(',')
0 голосов
/ 19 марта 2020
    var str = '12345;Joran,Michael;02;17;63';
    var arr = str.split(";");
    var letters = /^[A-Za-z]/;
    var final_str = "";
    for (var i = 0; i < arr.length; i++) {
        final_str = arr[i].match(letters)?final_str +'"'+ arr[i]+'"'+",":final_str + arr[i]+",";
    }
    console.log(final_str.substring(0,final_str.length -1));
0 голосов
/ 19 марта 2020

Я бы сделал это в два этапа. Сначала сопоставьте не-; символы, у которых есть хотя бы один ,, и заключите их в кавычки. Затем замените все ; s в результате на ,:

console.log(
  '12345;Joran,Michael;02;17;63'
    .replace(/[^;,]*,[^;]*/g, '"$&"')
    .replace(/;/g, ',')
);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...