1

我有一串像

var input =  "data1, data2, 1233456,  \"\"\" test, data, here \"\"\", 08976, test data"

我想用\"\"\" test, data, here \"\"\"这个字符串的一部分 替换test; data; here

简而言之',',仅用分号替换块';'内的任何字符串\"\"\"

我正在尝试使用正则表达式来做到这一点。

我正在尝试使用以下正则表达式 -\[\\\\\"](.+)[\\\\\"]

4

4 回答 4

2

仅供参考,如果您想要比较非正则表达式解决方案,您也可以使用 LINQ 执行此操作:

input= string.Join("\"\"\"", 
         input.Split(new []{"\"\"\""}, StringSplitOptions.None)
         .Select( (s,i) => i % 2 == 1 ? s.Replace (',', ';') : s)
       );
于 2013-10-04T12:44:40.537 回答
1

谢谢大佬帮忙

你的回答很有用。

终于在这个链接的帮助下用下面的代码做到了这一点

//My input string
var input  = Regex.Replace(input  , "[\\\"](.+)[\\\"]", ReplaceMethod);


//Method used to replace 
public static string ReplaceMethod(Match m)
    {
        string newValue = m.Value;
        return newValue.Replace("\"", "").Replace(",", ";");
    }
于 2013-10-04T13:08:27.173 回答
0

以下代码可能满足要求...

var output = Regex.Replace(input , "(?<=\"\"\".+),(?=.+\"\"\")", ";");

于 2013-10-04T13:11:28.213 回答
0

我认为这个字符串不可能用正则表达式来做到这一点:
data1, 1233456, """ test, data, here """, 08976, test, """ second, data """, aso

有可能:
data1, 1233456, < test, data, here >, 08976, test, < second, data >, aso

但不是“xxx”

模式:\"{3}.*\"{3}
foreach 正则表达式匹配此模式 string.replace(',', ';')

但我正在尝试制作正则表达式......
我放弃了:/

于 2013-10-04T12:48:18.020 回答