Convert-String
设置字符串的格式以匹配示例。
语法
Convert-String
[-Example <System.Collections.Generic.List`1[System.Management.Automation.PSObject]>]
-InputObject <String>
[<CommonParameters>]
说明
该 cmdlet 格式化字符串以匹配示例的格式。
示例
示例 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 cmdlet 获取所有进程。 该命令将它们传递给 Select-Object cmdlet,该 cmdlet 选择进程名称和进程 ID。 在管道结束时,该命令使用 ConvertTo-Csv cmdlet 将输出转换为逗号分隔值,不包含类型信息。 该命令将结果存储在 $Processes 变量中。 $Processes 现在包含进程名称和 PID。
第二个命令指定更改输入项顺序的示例变量。 该命令覆盖 $Processes
中的每个字符串。
注意
第四个模式隐式表示两个或多个用空格分隔的字匹配。 如果没有第四个模式,则只有用双引号括起来的字符串的第一个字匹配。
参数
-Example
指定目标格式的示例列表。 使用左侧的源模式和右侧的目标模式指定用等号 (=
) 分隔的对,如以下示例所示:
-Example "Hello World=World, Hello"
-Example "Hello World=World: Hello",'"Hello","1"=1: Hello'
注意
第二个示例使用模式列表
或者,指定包含 Before 和 After 属性的哈希表列表。
-Example @{before='"Hello","World"'; after='World: Hello'}, @{before='"Hello","1"'; after='1: Hello'}
注意
避免在等号周围使用空格 (=
),因为它们被视为模式的一部分。
类型: | List<T>[PSObject] |
别名: | E |
Position: | Named |
默认值: | None |
必需: | False |
接受管道输入: | False |
接受通配符: | False |
-InputObject
指定要设置格式的字符串。
类型: | String |
Position: | Named |
默认值: | None |
必需: | True |
接受管道输入: | True |
接受通配符: | False |
输入
String
可以通过管道将字符串传递给此 cmdlet。
输出
String
此 cmdlet 返回一个字符串。