共用方式為


Convert-String

格式化字串以符合範例。

語法

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

Description

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,以選取進程名稱和進程標識符。 在管線結尾,命令會使用 ConvertTo-Csv Cmdlet,將輸出轉換成逗號分隔值,而不需輸入資訊。 命令會將結果儲存在 $Processes變數中$Processes現在包含進程名稱和 PID。

第二個命令會指定變更輸入項目順序的範例變數。 命令會涵蓋中的每個 $Processes字串。

注意

第四個模式隱含地表示兩個或多個以空格分隔的字組相符。 如果沒有第四個模式,則只會比對以雙引弧括住的字串的第一個單字。

參數

-Example

指定目標格式的範例清單。 使用左邊的來源模式和右邊的目標模式,指定以等號 (=) 分隔的配對,如下列範例所示:

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

注意

第二個範例使用模式清單

或者,指定包含 BeforeAfter 屬性的哈希表清單。

  • -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 會傳回字串。