日期:2014-05-18  浏览次数:20408 次

【急救】关于字符串碰到的棘手问题.寻求高手解答..
变量A= "abcdeb ";
现在必须把变量A里的 "b "替换成 " <a> b </a> ";
替换后是这样 "a <a> b </a> cde <a> b </a> "

可是假如A的值= "a <a> b </a> cdeb ",这时那个已经替换掉的b不能动了,只能替换另外一个b.
----
也就是说:当A= "abcdeb ";这时替换容易   可是当A= "a <a> b </a> cdeb "。这时就难了!


------解决方案--------------------
string s = A.Replace( " <a> b </a> ", "b ");
s = A.Replace( "b ", " <a> b </a> ");

很难吗?
------解决方案--------------------
Avoid是个聪明孩子~
------解决方案--------------------
try

string result = Regex.Replace(yourStr, @ "^[\s\S]*?(?= <a[^> ]*> |$)| </a> [\s\S]*?(?= <a[^> ]*> )| </a> [\s\S]*$ ", new MatchEvaluator(regReplace), RegexOptions.IgnoreCase);


private string regReplace(Match m)
{
return m.Value.Replace( "b ", " <a> b </a> ");
}


因为不太清楚你的具体规则,所以这里的正则写的繁琐了,其实可以简化的
------解决方案--------------------
我是来学习滴 ...
------解决方案--------------------
扫描字符串,找到b后,判断,与b相邻的是否有 <a> 和 </b> ,有的话继续扫描后边的字符,寻找b,没有的话替换就可以了。