Du får modifiera ditt pattern att hitta mailadresser också. Sedan lägger du till en if-sats i din for-slinga där du letar efter @ i m-variabeln. Om sant lägger du till mailto, annars http. Detta borde funka. :)
public string ActivateLinks(object Text)
{
string result = (string)Text;
string patten = @"(\w+([-+.']\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*)|([\w-]+\.)+[\w-]+(/[\w- ./?%&=]*)?";
Regex chr = new Regex(patten, RegexOptions.IgnoreCase);
Match m;
for (m = chr.Match(result); m.Success; m = m.NextMatch())
{
if(m.ToString().Contains("@"))
result = result.Replace(m.Groups[0].ToString(),
"<a href=\"mailto:" + m.Groups[0].ToString() + "\">" + m.Groups[0].ToString() + "</a>");
else
result = result.Replace(m.Groups[0].ToString(),
"<a href=\"http://" + m.Groups[0].ToString() + "\" target='_blank'>" + m.Groups[0].ToString() + "</a>");
}
return result;
}
1. Static funktion.
2. Pattern som en konstant.
3. Kollar om gruppen "email" innehåller nåt och ser då att det är en e-postadress.
4. Använder match.Value. Istället för match.Groups[0].ToString().
5. Använder inte strings Replace metod i loopen utan använder istället Regex Replace funktionen med en MatchEvaluator.