2012-04-13 62 views
0

是否有使用通配符来定义以下的方式:某些字符不能用逗号替换字符吗?

我想一个"\"来之前和一个逗号后,当一个逗号没有之前或之后包含"\""

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

编辑样品数据:

"col1,col2,col3" 

应该成为

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

其中 “\””只是意味着一个引号字符串

+0

请显示一些示例输入和输出数据。 – 2012-04-13 09:36:12

+0

这不是全部的事实。请在第二部分的要求中显示样本数据:*当逗号字符在其之前或之后不包含“\”“* – 2012-04-13 09:44:58

+0

我的错误,现在编辑 – mezamorphic 2012-04-13 09:58:51

回答

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,所以你可以在开始和结束时添加一个\"。 (假设分隔符永远只是,,不包括空格)

+0

对不起,我错过了开始时的报价,是的我也编辑了我的问题 – mezamorphic 2012-04-13 09:56:34

+0

然后只是在开头和结尾添加“你应该得到你想要的:-) – Matten 2012-04-13 09:58:09

+0

我不认为你可以使用这个,因为第二个替换将模式匹配逗号,即使这个逗号在它之前已经有了一个引号。你最终会报价,报价,逗号,报价? – mezamorphic 2012-04-13 10:09:53

0

更换匹配的一切如下:^(\\\"),^(\\\")有:\",\"

这意味着什么,但一个反斜杠后跟一个引号,后跟一个逗号,后跟除反斜杠后面加上引号外的任何内容。

+0

这是绝对正确的,因为它不会编译,你是否在某处丢失了引号? – mezamorphic 2012-04-13 09:58:29

+0

可能,没有自己测试。刚刚给了我用Java构建的一般的正则表达式...应该知道引用仍然是一个问题。在这两个组中都将它变成(\\\“),并在组之前使^,否则将会出错......现在编辑 – MarioDS 2012-04-13 10:15:58

+0

Regex.Replace(Line,”^(\\\“ ),^(\\\“)”,“\”,\“”)似乎不起作用?(道歉,如果我在错误的地方插入引号) – mezamorphic 2012-04-13 10:27:14

0

使用“负看看后面”断言:

(?<!\\), 

不能给你一个更好的答案,而无需样品输入/输出。

0

尝试(?<!\"),(?!\"),这就是所谓Zero-Width Assertions

我现在很忙,后来解释,遗憾的是。

+0

你的意思是?Regex.Replace(Line,“(?<!\”)“,”(?!\“)”)? – mezamorphic 2012-04-13 10:24:32

0

我知道这个线程是有点老,但新参观这也可以做到:

string sample = "col1,col2,col3" 
string result = sample.Replace("""",""); 
result = "\"" + result.replace(",","\",\"") + "\"" 

希望它能帮助!

相关问题