2016-02-01 38 views
-1

我想要做的就是隻在hashtag符號直接位於字符串前面(即#stackoverflow)的地方從字符串中刪除hashtags。這是我在做什麼:必須有一個更簡單的方法來執行正則表達式替換

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);