Фильтр случайных запятых и пробелов - PullRequest
0 голосов
/ 19 сентября 2018

У меня есть строка, сгенерированная пользователем, которую я хотел бы разделить запятыми.

Когда пользователи создают эту строку, они могут вставлять дополнительные запятые или пробелы между запятыми, которые не нужны или не нужныили вызвать проблемы позже в моих сценариях;Например:

,   ,, ,,   ,H30332,B6235,,      ,,,,Y65454,,,M7373

Это должно быть отфильтровано до:

H30332,B6235,Y65454,M7373

Я пробовал несколько -split с и -replace с, но я не могу получить именно то, чтоМне нужно, или я получаю пробелы между ними или без запятых и без пробелов.

Ответы [ 3 ]

0 голосов
/ 20 сентября 2018
$rawList = ',   ,, ,,   ,H30332,B6235,,      ,,,,Y65454,,,M7373'
($rawList -replace '[, ]+', ',').Trim(',')
  • -replace '[, ]+', ',' заменяет любые непустые пробелы и / или запятые на одну запятую

  • .Trim(',') удаляет все начальные или конечные запятые.

Выше приведено H30332,B6235,Y65454,M7373, по желанию.

0 голосов
/ 21 сентября 2018

$ string = ', ,, ,,, H30332, B6235 ,, ,,,, Y65454 ,,, M7373'

($ string -replace ', + \ s *', ','-relace '\ s *, +', ','). Trim (',')

0 голосов
/ 19 сентября 2018

Примечание редактора : Этот ответ Java был опубликован до того, как ОП пояснил, что требуется решение PowerShell .

Этот код дает вам вывод: H30332, B6235, Y65454, M7373

    String str = ",   ,, ,,   ,H30332,B6235,,      ,,,,Y65454,,,M7373";

    String regex = "\\s";
    String replacement = "";
    String pattern = "(,*)(,)";

    str = str.replaceAll(regex, replacement);

    str = str.replaceAll(pattern, ",");

, после чего вы можете удалить ',' в начале.

    str = str.substring(1);
...