拨开荷叶行,寻梦已然成。仙女莲花里,翩翩白鹭情。
IMG-LOGO
主页 文章列表 替换文本栏位中不必要的双引号

替换文本栏位中不必要的双引号

白鹭 - 2022-01-25 1985 0 0

我试图在没有双引号的情况下替换名称中不必要的双引号。现在,我知道名称但我希望代码是动态的。任何建议都非常感谢。

$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
  • 显示新旧字符串以供您观看
标签:

0 评论

发表评论

您的电子邮件地址不会被公开。 必填的字段已做标记 *