使用C#在字符串中使用@符号有效地匹配用户名

时间:2015-09-15 15:08:47

标签: c# regex string-matching

我希望能够有效地挑选字符串中的用户名,然后将它们超链接到用户个人资料。就像Facebook一样。

但问题来自人们为@Username

做这样的事情

"有些话@Username ...有些话"
"有些话@Username!一些单词"

任何想法我仍然可以选择用户名,然后超链接它而不会在用户名结束后获得额外的字符?

1 个答案:

答案 0 :(得分:1)

我喜欢尝试使用框架解决这些问题:

var list = new List<string>
{
    "Some words @Username1... some words",
    "Some words @Username2! some words"
};

var items = list.Select(str => string.Concat(str.Substring(str.IndexOf('@') + 1).TakeWhile(char.IsLetterOrDigit)));
//items = ["Username1", "Username2"]

当然,你需要对坏字符串进行一些异常处理。如果不允许数字,您可以将char.IsLetterOrDigit更改为IsLetter