У меня есть (надеюсь) быстрый вопрос, который я, похоже, не могу решить самостоятельно.Powershell: Splitting String в CSV
У меня есть строка:
ITEM1 Количество: 12x 355ml bottlePrice: $ 23,95 $ 23,50 SAVE $ 0,45
То, что я хотел бы разделить, и вставить в файл CSV. Столбцы в сгенерированном CSV, и их значения, будут:
Имя: (все до «Количество:». В строке выше)
Количество: (между количеством и х)
Размер: (все между й и бутылкой)
OrigPrice: (все после того, как цена и вторым знак $)
SalePrice: (все между OrigPrice и SAVE)
Экономия: (все после того, как "SAVE")
Я надеюсь, что все это имеет смысл, я могу предоставить больше информации, если это необходимо.
Я ценю помощь!
Чтобы получить результат, CSV, вы можете добавить это в истинном объеме КРП блока. Порядок будет алфавитным по именам ключей, которые являются именами групп регулярных выражений в этом случае, например. Имя, количество и т. Д. 'if (...) { $ matches.remove (0) $ result = ($ matches.values |% {$ _.trim()}) -join ',' } else { ... } ' – nickptrvc
Спасибо @nickptrvc, я получил такое впечатление от регулярного выражения, что забыл ответить на остальную часть вопроса ... :) Я обновил свой ответ с функцией, которая возвращает объект, подходящий для Export-Csv и ConvertTo-Csv ... –
Я тоже был впечатлен регулярным выражением! Я скажу, что я предложил фрагмент, потому что он не требует, чтобы пользователь вводил имена ключей, такие как $ matches ['Size'], делая его несколько более динамичным (ограничение, конечно, регулярным выражением). Мне определенно понравилась идея типа PSCustomObject, но пользователь должен использовать версию 3 для создания этих типов. В версии 2 использование PSObject происходит очень медленно. Поэтому в этом случае я обычно по умолчанию использую хеш-таблицу и конкатенацию строк. Самое большое преимущество - обратная совместимость от 3 до 2. – nickptrvc