用C#替换字符串中的字符正则表达式

问题描述:

我想知道如何用数组括号内的,字符替换另一个字符,如.。字符串表达式我有低于:用C#替换字符串中的字符正则表达式

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

预期输出应该是:

属性[ “412324 - PENNDOT I-95”。 “Category”]。Value,Attributes [“412324 - PENNDOT I-95”。 “分类”]代码

+2

您是否尝试过任何东西?发布一些你迄今为止尝试过的代码。 – 2012-04-10 05:25:49

+0

是的,我试过了,它的工作原理。 – 2012-04-10 16:22:53

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

在正则表达式模式,到,的左侧为正回顾后零宽度断言,这意味着必须有一个[然后零个或多个既不是[也不是]的字符导致逗号。

在逗号后面,表示可以有零个或多个字符,既不是[也不是],因此必须有一个关闭]

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

+0

+1对于一个非常好的解决方案加说明 – Alex 2012-04-10 06:16:18

+0

谢谢你,杰伊。这个解决方案有效这让我有更多的了解正则表达的动机。 – 2012-04-10 16:21:41

,如果它总是在这个sheme,再快一点将与string.replace:

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

你可以用正则表达式是相同的,但它是慢,但仍然是可以打破如果输入的字符串改变它的结构

+0

这是一个有效的解决方案,但我不同意你最后的评论。你的解决方案比一个好的正则表达式解决方案更容易破解。 – 2012-04-10 05:33:39

+0

是的,我知道这一点,RegEx将在大多数一般情况下工作,但如果输入字符串总是看起来像这样--OP可以考虑使用这个更简单(和更快)的解决方案。无论如何,OP的问题的正确答案是Jay的答案 - 它大量使用RegEx来替换正确的逗号 – 2012-04-10 06:49:30

+0

正如你所提到的,这个解决方案应该可以工作,但是有时输入字符串可能没有额外的空格和引号标记可以是单引号。我的问题没有说清楚。 – 2012-04-10 16:25:14