替换某些字符不遵循逗号的字符?

时间:2012-04-13 09:35:27

标签: c# .net regex string

有没有办法使用通配符来定义以下内容:

我希望逗号之前和之后有一个"\",当逗号字符在它之前或之后不包含"\""时。

我有点不确定如何做出否定。

编辑样本数据:

"col1,col2,col3" 

应该成为

"\"col1\",\"col2\",\"col3\""

其中“\”“仅表示引用字符串

5 个答案:

答案 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(",","\",\"") + "\""

希望它有所帮助!

相关问题