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'

注意

第二个示例使用模式列表

或者,指定一个哈希表列表,其中包含 之前之后 属性。

  • -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 返回一个字符串。