共用方式為


Convert-String

格式化字串以符合範例。

語法

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

Description

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,以選取行程名稱和進程識別碼。 在管線結尾,命令會使用 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 會傳回字串。