Поделиться через


Convert-String

Форматирует строку для сопоставления примеров.

Синтаксис

Convert-String
       [-Example <System.Collections.Generic.List`1[System.Management.Automation.PSObject]>]
       -InputObject <String>
       [<CommonParameters>]

Описание

Командлет форматирует строку, соответствующую формату примеров.

Примеры

Пример 1. Преобразование формата строки

"Mu Han", "Jim Hance", "David Ahs", "Kim Akers" | Convert-String -Example "Ed Wilson=Wilson, E."

Han, M.
Hance, J.
Ahs, D.
Akers, K.

Первая команда создает массив, содержащий имена и фамилии.

Вторая команда форматирует имена в соответствии с примером. Он ставит фамилию в первую очередь в выходных данных, а затем инициал.

Пример 2. Упрощение формата строки

$composers = @("Johann Sebastian Bach", "Wolfgang Amadeus Mozart", "Frederic Francois Chopin", "Johannes Brahms")
$composers | Convert-String -Example "first middle last=last, first"

Bach, Johann
Mozart, Wolfgang
Chopin, Frederic
Brahms, Johannes

Первая команда создает массив, содержащий первые, средние и фамилии. Обратите внимание, что последняя запись не имеет промежуточного имени.

Вторая команда форматирует имена в соответствии с примером. Он помещает фамилию в выходные данные, за которым следует первое имя. Все промежуточные имена удалены; запись без промежуточного имени обрабатывается правильно.

Пример 3. Управление выходными данными, когда строки не соответствуют примеру

$composers = @("Johann Sebastian Bach", "Wolfgang Amadeus Mozart", "Frederic Francois Chopin", "Johannes Brahms")
$composers | Convert-String -Example "first middle last=middle, first"

Sebastian, Johann
Amadeus, Wolfgang
Francois, Frederic

Первая команда создает массив, содержащий первые, средние и фамилии. Обратите внимание, что последняя запись не имеет промежуточного имени.

Вторая команда форматирует имена в соответствии с примером. Он помещает промежуточное имя в выходные данные, за которым следует первое имя. Последняя запись в $Composers пропускается, так как она не соответствует образцу шаблона: у него нет промежуточного имени.

Пример 4. Осторожность с пространствами красоты

$composers = @("Antonio Vivaldi", "Richard Wagner ", "Franz Schubert", "Johannes Brahms ")
$composers | Convert-String -Example "Patti Fuller = Fuller, P."

Wagner, R.
 Brahms, J.

Первая команда создает массив имен и фамилий. Обратите внимание, что второй и четвертый элементы имеют дополнительное место в конце после фамилии.

Вторая команда преобразует все строки, соответствующие образцу шаблона: слово, пробел, слово и последнее конечное пробел, все это до знака равенства (=). Кроме того, обратите внимание на ведущее пространство в выходных данных.

Пример 5. Форматирование сведений о процессе с несколькими шаблонами

$ExamplePatterns = @(
    @{before='"Hello","World"'; after='World: Hello'},
    @{before='"Hello","1"'; after='1: Hello'},
    @{before='"Hello-World","22"'; after='22: Hello-World'},
    @{before='"hello world","333"'; after='333: hello world'}
)
$Processes = Get-Process   | Select-Object -Property ProcessName, Id | ConvertTo-Csv -NoTypeInformation
$Processes | Convert-String -Example $ExamplePatterns

Id: ProcessName
4368: AGSService
8896: Amazon Music Helper
4420: AppleMobileDeviceService
...
11140: git-bash
0: Idle
...
56: Secure System
...
13028: WmiPrvSE
2724: WUDFHost
2980: WUDFHost
3348: WUDFHost

$ExamplePatterns определяет различные ожидаемые шаблоны в данных с помощью примеров.

Первый шаблон, @{before='"Hello","World"'; after='World: Hello'}, считывается следующим образом:

  • ожидать строк, в которых слово заключено в двойные кавычки, а затем запятая,
  • , а затем второй и последний слова, заключенные в кавычки;
  • без пробелов в строке. В выходных данных: сначала поместите второе слово,
  • без кавычки, а затем одно пространство, а затем первое слово без кавычки.

Второй шаблон, @{before='"Hello","1"'; after='1: Hello'}, считывается следующим образом:

  • ожидать строк, в которых слово заключено в двойные кавычки, а затем запятая,
  • , а затем число заключено в кавычки;
  • без пробелов в строке. В выходных данных: сначала поместите число,
  • без кавычки, а затем одно пространство, а затем слово без кавычки.

Третий шаблон, @{before='"Hello-World","22"'; after='22: Hello-World'}, считывается следующим образом:

  • ожидать строк, в которых два слова с дефисом между ними заключены в
  • двойные кавычки, затем запятую, а затем число заключено в кавычки;
  • без пробелов между запятой и третьей двойной кавычки.
  • В выходных данных: сначала поместите число без кавычки, а затем одно пробел,
  • , а затем дефисированные слова без кавычки.

Четвертый и последний шаблон, @{before='"hello world","333"'; after='333: hello world'}, считывается следующим образом:

  • ожидать строк, в которых два слова с пробелом между ними заключены в
  • двойные кавычки, затем запятую, а затем число заключено в кавычки;
  • без пробелов между запятой и третьей двойной кавычки.
  • В выходных данных: сначала поместите число без кавычки, а затем одно пробел,
  • , а затем слова с пробелом между, без кавычки.

Первая команда получает все процессы с помощью командлета Get-Process. Команда передает их командлету Select-Object, который выбирает имя процесса и идентификатор процесса. В конце конвейера команда преобразует выходные данные в разделенные запятыми значения без сведений о типе с помощью командлета ConvertTo-Csv. Команда сохраняет результаты в переменной $Processes. $Processes теперь содержит имена процессов и piD.

Вторая команда указывает пример переменной, которая изменяет порядок входных элементов. Команда охватывает каждую строку в $Processes.

Заметка

Четвертый шаблон неявно говорит, что два или более слов, разделенных пробелами, совпадают. Без четвертого шаблона сопоставляется только первое слово строки, заключенной в двойные кавычки.

Параметры

-Example

Задает список примеров целевого формата. Укажите пары, разделенные знаком равенства (=), с исходным шаблоном слева и целевым шаблоном справа, как показано в следующих примерах:

  • -Example "Hello World=World, Hello"
  • -Example "Hello World=World: Hello",'"Hello","1"=1: Hello'

Заметка

Второй пример использует список шаблонов

Кроме того, укажите список хэш-таблиц, содержащих до и свойств After.

  • -Example @{before='"Hello","World"'; after='World: Hello'}, @{before='"Hello","1"'; after='1: Hello'}

Осторожность

Избегайте использования пробелов вокруг знака равенства (=), так как они рассматриваются как часть шаблона.

Тип:List<T>[PSObject]
Aliases:E
Position:Named
Default value:None
Обязательно:False
Принять входные данные конвейера:False
Принять подстановочные знаки:False

-InputObject

Задает строку для форматирования.

Тип:String
Position:Named
Default value:None
Обязательно:True
Принять входные данные конвейера:True
Принять подстановочные знаки:False

Входные данные

String

Строки можно передать в этот командлет.

Выходные данные

String

Этот командлет возвращает строку.