我試圖在沒有雙引號的情況下替換名稱中不必要的雙引號。現在,我知道名稱但我希望代碼是動態的。任何建議都非常感謝。
$FilePath = "C:\Test\"
Get-ChildItem $FilePath -Filter | ForEach-Object {
(Get-Content $_.FullName -Raw) | Foreach-Object {
$_ -replace ',"Frederick "Fred"",' , ',"Frederick Fred",' `
-replace ',"Brian "Josiah"",' , ',"Brian Josiah",' `
-replace ',""",' , ',"",'
} | Set-Content $_.FullName
}
uj5u.com熱心網友回復:
使用正則運算式:
# Sample input
$str = '"Frederick "Fred"","Brian "Josiah"",""""'
$str -replace '(?m)(?<=,|^)"([^,"]*)"([^,"]*)""(?=,|$)', '"$1$2"'
輸出:
"Frederick Fred","Brian Josiah",""
有關正則運算式的解釋和試驗它的機會,請參閱此 regex101.com 頁面(請注意,"鏈接頁面上的字符被轉義為\",因為整個正則運算式都包含在 中"...",與 中 不同'...',如上所述) .
uj5u.com熱心網友回復:
這是一種擺脫不需要的雙引號的方法,該雙引號不使用 [我們中的某些人的思維融化] 正則運算式。[咧嘴笑]
代碼 ...
$TwoDoubleQuotes = '""'
$OneDoubleQuote = '"'
$SpaceDQ = ' "'
$Space = ' '
$InString = '"Frederick "Fred"","Brian "Josiah"",""""'
$OutString = $InString.Replace($TwoDoubleQuotes, $OneDoubleQuote).Replace($SpaceDQ, $Space)
$InString
$OutString
輸出 ...
"Frederick "Fred"","Brian "Josiah"",""""
"Frederick Fred","Brian Josiah",""
代碼做什么...
- 定義了一些非常簡單的常量
字串模式對我來說很難閱讀,所以這繞過了它。[咧嘴笑] - 定義入站字串
-
將替換with的
.Replace()字串方法鏈接起來,然后僅用 a替換。2xDQ1xDQSpaceDQSpace - 將新字串保存到 $Var
- 顯示新舊字串以供您觀看
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/402174.html
標籤:电源外壳 powershell-2.0 powershell-3.0 powershell-4.0
