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


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 теперь содержит имена процессов и ИДЕНТИФИКАТОР.

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

Примечание.

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

Параметры

-Example

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

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

Примечание.

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

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

  • -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

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