如何通过正则表达式替换这些字符串?

时间:2013-05-26 18:40:43

标签: c# regex string windows-phone-7

我在Windows Phone 7.5及更高版本上处理项目目标。

我想要什么
strA到strB,
strA有一堆[img] attachmenti [/ img]对,我希望将[img]对转换为另一对,我可以在RichTextBox中使用它。[我有一个数组,它保存图像的url,我将通过它到图像源属性]

//example data
strA = this a good day.[img]attachment1[/img]I love it[img]attachment2[/img];
strB = this a good day.<InlineUIContainer><Image Source="XXXXXX"></Image><InlineUIContainer>I love it<InlineUIContainer><Image Source="XXXXXX"></Image><InlineUIContainer>


问题是什么
我使用MatchCollection来获取字符串中所有匹配的相应部分。我在立即窗口检查结果,代码没问题,但问题是MatchCollection是readonly,我无法替换它的值,那么如何在匹配后替换这些字符串或者有更好的方法来实现它?

                foreach (var item in rawdata.data) 
                {
                    if ( item.thumbnail != null)  
                    { 
                         MatchCollection mc = Regex.Matches(item.text, @"\[img\](.+?)\[/img\]", RegexOptions.Compiled | RegexOptions.Singleline);
                         int i = 0;
                         foreach (Match nextMatch in mc) 
                         {
                             string imghead = @"<InlineUIContainer><Image" + " Source=\"" + item.thumbnail[i] + "\">";

                             StringBuilder sb = new StringBuilder();
                             sb.Append(@"<InlineUIContainer><Image");
                             sb.Append(" Source=\"");
                             sb.Append(item.thumbnail[i]);
                             sb.Append("\">");
                             sb.Append(@"</Image></InlineUIContainer>");

                             nextMatch.Value.Replace( nextMatch.Value, sb.ToString());

                             i = i + 1;
                         }
                    }
                }

1 个答案:

答案 0 :(得分:0)

string str = Regex.Replace(item.text, @"\[img\](.+?)\[/img\]", @"<InlineUIContainer><Image Srouce=\"$1\" /></InlineUIContainer>", RegexOptions.IgnoreCase);