使用 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
。
我希望能够有效地从字符串中挑选出用户名,然后将它们超链接到用户个人资料。就像 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
。