我有一个字符串,我想在注释标记之间提取文本,操纵它并将其替换回来。以下是我正在尝试使用的内容:
...
<!--RegionStart url="http://domain1.com"-->
some text here
<!--RegionFinish-->
...
<!--RegionStart url="http://domain2.com"-->
some text there
<!--RegionFinish-->
...
<!--RegionStart url="http://domain3.com"-->
some text anywhere
<!--RegionFinish-->
...
我想获得评论标签之间的文本集合,并通过它们枚举如下:
foreach (string item in collection)
{
string newText = item.Replace("some", "all") + Custom(url);
//put text back somehow
}
我想结束这个:
...
<!--RegionStart url="http://domain1.com"-->
all text here domain1.com
<!--RegionFinish-->
...
<!--RegionStart url="http://domain2.com"-->
all text there domain2.com
<!--RegionFinish-->
...
<!--RegionStart url="http://domain3.com"-->
all text anywhere domain3.com
<!--RegionFinish-->
...
我该怎么做?
答案 0 :(得分:2)
这里理解的主要是
这应该可以解决问题:
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
outputTextBox.Text = "";
Regex regex = new Regex("(<!--RegionStart url=\"http://(.*?)\"-->)(.*?)(<!--RegionFinish-->)", RegexOptions.Singleline);
string copy = inputTextBox.Text;
MatchCollection coll = regex.Matches(inputTextBox.Text);
outputTextBox.Text = regex.Replace(copy, new MatchEvaluator(Replace));
}
public string Replace(Match m)
{
// Format the text you want to get back:
return String.Format("{0}{1} {2}{3}",
m.Groups[1].ToString() + Environment.NewLine,
m.Groups[3].ToString().Replace("some", "all").Trim(),
m.Groups[2].ToString().Trim() + Environment.NewLine,
m.Groups[4].ToString());
}
}