我正在尝试从个人资料链接中提取用户名。
个人资料链接示例:https://username.site.com
我不知道它是否有http,https,以斜线结尾,它可能是很多东西。它可能有/photo/tkf39vk3
或任何东西。有没有1个可靠的正则表达式可以帮助解决这个问题?其他问题没有帮助。
到目前为止我尝试了什么?
((?:[^.](?<!www))+)\.site\.com
它包含了http或https?
答案 0 :(得分:2)
我接近它的方法是利用Uri
和UriBuilder
类:
string[] inputArray = new[]
{
"https://username1.site.com",
"https://username2.site.com/photo/asdasd",
"https://username.site.com/photo/tkf39vk3",
"http://username3.site.com/photo/tkf39vk3",
"username4.site.com/photo/tkf39vk3"
};
foreach(string i in inputArray)
{
//Parses into Uri object, using UriBuilder to accommodate lack of http/https
Uri uri = new UriBuilder(i).Uri;
//Splits on '.' and grabs the first item
Console.WriteLine(uri.DnsSafeHost.Split('.')[0]);
}
这将输出:
USERNAME1
USERNAME2
用户名
USERNAME3
username4
当然,你必须对我的解决方案有一个合理的输入期望(你也需要使用正则表达式),但你可以通过一些调整轻松地使其更加健壮。我只想展示最简单的解决方案。
小提琴here
答案 1 :(得分:0)
快速执行此操作,但可能不是最好的方法是将其拆分为//
,然后再将其拆分为.
string profileLink = "https://username.site.com";
var list = profileLink.Split(new string[] { @"//" }, StringSplitOptions.None);
var result = list[1].Split('.');
Console.WriteLine(result[0]);