我有一个字符串,其中包含类似以下模式的标记内容:
This is a <ss type="">(example)</ss> string which <ss type="">(contains)</ss> tagged contents.
期望的结果是:
This is a <ss type="example">(example)</ss> string which <ss type="contains">(contains)</ss> tagged contents.
我尝试使用
RegularExpression
提取标记内容列表,并提取了标记文本列表,将标记文本放在双引号中作为type
的值,并用新字符串替换旧字符串。但问题是,由于
Regex.Replace();
遵循相同的Regex
模式,它会将所有标记内容都替换为标记内容列表的最后一个元素,如下所示:This is a <ss type="contains">(contains)</ss> string which <ss type="contains">(contains)</ss> tagged contents.
我的工作代码如下:
StringBuilder resultText= new StringBuilder(@"This is a <ss type="">(example)</ss> string which <ss type="">(contains)</ss> tagged contents.");
string overallPattern = @"<ss\stype=""([a-zA-Z]*)"">(.*?)</ss>";
List<string> matchList = new List<string>();
List<string> contentList = new List<string>();
StringBuilder sb;
Regex overallRegex = new Regex(overallPattern, RegexOptions.None);
string resultContent = resultText.ToString();
foreach (Match match in overallRegex.Matches(resultContent))
{
string matchResult = match.ToString();
matchList.Add(matchResult);
string content = matchResult.Split('(', ')')[1];
contentList.Add(content);
}
for (int j = 0; j < matchList.Count; j++)
{
sb = new StringBuilder();
sb.Append(matchList[j].Insert(10, string.Format(contentList[j])));
resultContent = Regex.Replace(resultContent, overallPattern, sb.ToString());
resultText = new StringBuilder();
resultText.Append(resultContent);
}
我的问题是:
我该如何按顺序将正确的标签文本放入其双引号中?
\"
。我认为它与您的相同。上面的字符串只是用于演示。 - Almett