Skip to main content
 首页 » 编程设计

c#之需要正则表达式来关闭或替换引号

2024年02月03日26exmyth

请帮我解决我的问题。 我有以下字符串的列表:

a 
"b 
c" 
"ddd" 
'ee' 
a"b"c 
a'b'c 

因此我需要:

"a" 
"b" 
"c" 
"ddd" 
"ee" 
"a\"b\"c" 
"a'b'c" 

请帮我写替换模式

请您参考如下方法:

正如其他人已经在评论中指出的那样:这不是正则表达式的工作。事实上,如果您尝试这样做,您将获得比直接想法可读性和可维护性差的代码。

string.Concat("\"", myString.Trim('"', '\'').Replace("\"","\\\""), "\""); 

PowerShell 测试:

PS Home:\> filter fixString { '"' + $_.Trim('"', "'").Replace('"', '\"') + '"' } 
PS Home:\> 'a','"b','c"','"ddd"',"'ee'",'a"b"c',"a'b'c" | fixString 
"a" 
"b" 
"c" 
"ddd" 
"ee" 
"a\"b\"c" 
"a'b'c" 

但是,如果您迫切需要正则表达式,我只能想到以下三个单独的替换:

myString = Regex.Replace(myString, @"^['""]|['""]$", ""); 
myString = Regex.Replace(myString, @"""", @"\"""); 
myString = Regex.Replace(myString, "^|$", @""""); 

PowerShell 测试:

PS Home:\> 'a','"b','c"','"ddd"',"'ee'",'a"b"c',"a'b'c" | 
>> % { $_ -replace '^[''"]|[''"]$' -replace '"','\"' -replace '^|$','"' } 
"a" 
"b" 
"c" 
"ddd" 
"ee" 
"a\"b\"c" 
"a'b'c" 

感谢 Toader Mihai Claudiu,以下仅适用于两个正则表达式谁提供了一些重要的建议:

myString = Regex.Replace(@"^['""]?(.*?)['""]?$", @"""$1"""); 
myString = Regex.Replace(@"(?<=.)""(?=.)", @"\"""); 

PowerShell 测试:

PS Home:\> 'a','"b','c"','"ddd"',"'ee'",'a"b"c',"a'b'c" | 
>> % { $_ -replace '^[''"]?(.*?)[''"]?$','"$1"' -replace '(?<=.)"(?=.)','\"' } 
"a" 
"b" 
"c" 
"ddd" 
"ee" 
"a\"b\"c" 
"a'b'c" 

现在问问自己:一个月后您还知道代码的作用吗?也许一年?