Convert-String
设置字符串的格式以匹配示例。
语法
Convert-String
[-Example <System.Collections.Generic.List`1[System.Management.Automation.PSObject]>]
-InputObject <String>
[<CommonParameters>]
说明
Convert-String 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'
注释 第二个示例使用模式列表
或者,指定一个哈希表列表,其中包含 之前 和 之后 属性。
-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 返回一个字符串。