使用C#Regex替换字符串中的字符

时间:2012-04-10 05:20:27

标签: c# regex string

我想知道如何将数组括号,中的[]个字符替换为另一个字符,例如.。我的字符串表达式如下:

  

属性[“412324 - PENNDOT I-95”,“类别”]。值,属性[“412324 - PENNDOT I-95”,“类别”]。代码

预期输出应为:

  

属性[“412324 - PENNDOT I-95”。 “类别”]。值,属性[“412324 - PENNDOT I-95”。 “类别”。代码

2 个答案:

答案 0 :(得分:4)

var regex = new Regex(@"(?<=\[[^\[\]]*),(?=[^\[\]]*\])");
return regex.Replace(<your sample string>, ".");

在正则表达式模式中,,的左侧是一个正向后观零宽度断言,这意味着必须有[,然后是零个或多个不是{{1}的字符} [导致逗号。

在逗号之后,一个积极的前瞻性零宽度断言,意味着可能有零个或多个字符既不是]也不是[,那么必须有一个结束]。< / p>

零宽度断言意味着模式必须位于匹配文本之前或之后,但不是匹配的一部分。由于我们仅匹配],因此我们的替换只是,

答案 1 :(得分:0)

如果它始终处于这个模糊中,那么更快就是String.Replace:

string sin = "Attributes["412324 - PENNDOT I-95", "Category"].Value, Attributes["412324 - PENNDOT I-95", "Category"].Code";
string sout = sin.Replace("\", \"","\". \"");

你可以用RegEx做同样的事情,但它会慢一点,如果输入字符串改变它的结构它仍会破坏