Regex.Заменить NONE между запятой и удалить последнюю запятую - PullRequest
0 голосов
/ 20 марта 2019

У меня есть столбец со следующим значением:

OK ,, A, B, INSERV, OOS ,,

, и я хотел бы получить следующий результат с Regex.Replace (field,"заменить шаблон"), поэтому, если между строкой есть двойная запятая, тогда ставьте NONE между запятой и удаляйте последнюю множественную запятую:

OK, NONE, A, B, INSERV, OOS

спасибо, S

1 Ответ

0 голосов
/ 20 марта 2019

Вам понадобится как минимум два вызова на замену, один для запятой и один для запятой посередине:

var input = 'OK,,,A,B,INSERV,OOS,,';
input = input.replace(/,*$/, ''); // remove trailing commas
input = input.replace(/,(?=,)/g, ',NONE'); // add NONE
console.log(input);

input = 'OK,,,A,B,INSERV,OOS,,';
input = input.replace(/,*$/, ''); // remove trailing commas
input = input.replace(/,{2,}/g, ',NONE,'); // add NONE
console.log(input);

Во-первых, мы должны удалить запятые, чтобы в них не было записей NONE. Затем мы проверяем запятую, а затем проверочное утверждение, совпадающее с запятой. Я использовал lookahead, чтобы заставить регулярное выражение работать даже при наличии нескольких запятых (см. Пример).

Я добавил два возможных маршрута, один из которых ставит «NONE» между всеми запятыми, а другой уменьшает любое количество запятых до ОДНОЙ записи «NONE».

Синтаксис C # будет

var input = "OK,,,A,B,INSERV,OOS,,";
input = input.TrimEnd(',');
input = Regex.Replace(input, ",(?=,)", ",NONE"); // add NONE
input.Dump();

input = "OK,,,A,B,INSERV,OOS,,";
input = input.TrimEnd(',');
input = Regex.Replace(input, ",{2,}", ",NONE,"); // add NONE
input.Dump();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...