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'
附注 第二個範例使用模式清單
或者,指定包含 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 會傳回字串。