Как подавить регулярные выражения и равномерно распределить пробел во время Сплита - PullRequest
1 голос
/ 31 августа 2009

Я пытаюсь создать регулярное выражение для токенизации строки. Пример строки:

ExeScript.ps1 $ 1, $ 0,% 1,% 3

Или это может быть небрежно напечатано как. ExeScript.ps1 $ 1, $ 0,% 1,% 3`

Я использую простую строку регулярных выражений.

Regex RE = new Regex(@"[\s,\,]");
return (RE.Split(ActionItem));

Я получаю целую кучу нулей между script1.ps1 и $ 1 Когда он расположен равномерно, как в первом примере, я не получаю пробела между script1.ps1 и $ 1.

Что я делаю не так? Как подавить пробел и убедиться, что в каждой ячейке массива есть значение, которое теперь является пробелом.

Боб.

1 Ответ

2 голосов
/ 31 августа 2009

Попробуйте это регулярное выражение:

Regex RE = new Regex(@"[\s,\,]+");

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

Regex RE = new Regex(@"\s*,\s*");

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

Возможно, вам также придется решить, как вы хотите обрабатывать входные данные, такие как:

foo, ,bar

, который вы можете просмотреть как список из трех элементов, второй из которых - один пробел.

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