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