我想要做的是仅在字符串符号直接位于字符串之前(即#stackoverflow)从字符串中删除主题标签。这就是我正在做的事情:
var paragraph = "Cum sociis natoque penatibus et magnis dis parturient montes, nascetur " +
"ridiculus mus. Aliquam bibendum egestas tortor et lobortis. Curabitur malesuada " +
"hendrerit volutpat. Aenean commodo finibus faucibus. Sed tincidunt quam eget erat " +
"interdum, non ornare est semper. Aliquam ac orci condimentum, pharetra elit eu, #cursus " +
"felis. Ut risus mi, tincidunt in #condimentum nec, ornare vel enim. Curabitur nunc est, " +
"maximus at ultricies sit #amet, tincidunt eget lectus. Mauris in erat ut lectus varius " +
"hendrerit ut id neque. Fusce ultricies efficitur mauris, ac vestibulum purus bibendum sed. " +
"Nunc a ultricies eros.";
var expression = @"(?<=\s|^)#(\w*[A-Za-z_]+\w*)";
Regex regex = new Regex(expression);
MatchCollection matches = regex.Matches(paragraph);
foreach(Match m in matches)
{
paragraph = paragraph.Replace(m.Groups[0].Value, m.Groups[1].Value);
}
有没有更好的方法将第一组匹配中的值替换为第二组中的值?
答案 0 :(得分:1)
您可以使用Regex.Replace
代替迭代MatchCollection
paragraph = regex.Replace(paragraph, m => m.Groups[1].Value);