使用 C# 高效地将用户名与字符串中的 @ 符号匹配

Efficiently Match Usernames With @ Symbol In A String Using C#

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

但是当人们为@Username

做这样的事情时,问题就来了

"Some words @Username... some words"
"Some words @Username! some words"

知道我怎么可能仍然只选择用户名,然后超链接它而不在他们的用户名结束后得到额外的字符吗?

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

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