【发布时间】:2019-07-05 17:17:44
【问题描述】:
我正在尝试如下操作和清理一串数据库列。
示例源字符串:
[foo],[bar],baz
[foo],bar,[baz]
[foo],[bar,[baz]
[foo],bar],[baz]
foo,bar,baz
(等等)
预期输出:
[foo],[bar],[baz]
我尝试在字符串上运行以下正则表达式替换:
string columnString = "[foo],[bar],baz";
if (!Regex.IsMatch(columnString, @"^\[.*"))
{
columnString = string.Concat("[", columnString);}
if (!Regex.IsMatch(columnString, @"^.*\]$"))
{
columnString = string.Concat(columnString,"]");
}
while (!Regex.IsMatch(columnString, @"^.*\],.*$"))
{
columnString = Regex.Replace(columnString, @",", @"],");}
while (!Regex.IsMatch(columnString, @"^.*,\[.*$"))
{
columnString = Regex.Replace(columnString, @"\],", @"],[");
}
虽然这修复了前括号和尾括号,但它(显然)不处理字符串中已经存在匹配项的逗号。
任何人都可以建议一种可以清理它的方法(它不必是正则表达式)。
干杯
【问题讨论】:
-
为什么不直接用逗号分开,检查每一项是否有括号,然后重新加入?
-
我想我真的认为我需要使用正则表达式(即使我知道还有其他选择)。感谢您提供简单的解决方案(为什么我会过度思考这些东西;))
-
我发布了fixed solution, please check。 +1 一个很好的与字符串相关的问题。