有没有办法使用通配符来定义以下内容:
我希望逗号之前和之后有一个"\"
,当逗号字符在它之前或之后不包含"\""
时。
我有点不确定如何做出否定。
编辑样本数据:
"col1,col2,col3"
应该成为
"\"col1\",\"col2\",\"col3\""
其中“\”“仅表示引用字符串
答案 0 :(得分:0)
使用正则表达式或简单替换:
string s = "col1,col2\",\"col3";
// replace all existing quotes and replace all commas with escaped characters again
string r = s.Replace('\"','').Replace(",","\",\"");
// r = "col1\",\"col2\",\"col3"
但这不符合您的样本数据:
"col1,col2,col3" should become "col1\",\"col2\",\"col3\""
这不遵循您的规则(查看尾随\"
!)。也许你想要包装所有col,所以你也可以在开头和结尾添加\"
。 (假设分隔符总是,
,不包括空格)
答案 1 :(得分:0)
将符合以下内容的所有内容:^(\\\"),^(\\\")
替换为:\",\"
这意味着除了反斜杠后跟一个引号,后面跟一个逗号,然后是反斜杠后跟一个引号。
答案 2 :(得分:0)
使用“负面看后面”断言:
(?<!\\),
如果没有样本输入/输出,无法给出更好的答案。
答案 3 :(得分:0)
尝试(?<!\"),(?!\")
,称为Zero-Width Assertions
我现在很忙,稍后会解释,对不起。
答案 4 :(得分:0)
我知道这个帖子有点旧,但对于新访问者来说,这也可以做到:
string sample = "col1,col2,col3"
string result = sample.Replace("""","");
result = "\"" + result.replace(",","\",\"") + "\""
希望它有所帮助!