从链接中提取用户名?

时间:2018-04-23 20:03:00

标签: c# .net

我正在尝试从个人资料链接中提取用户名。

个人资料链接示例:https://username.site.com

我不知道它是否有http,https,以斜线结尾,它可能是很多东西。它可能有/photo/tkf39vk3或任何东西。有没有1个可靠的正则表达式可以帮助解决这个问题?其他问题没有帮助。

到目前为止我尝试了什么?

((?:[^.](?<!www))+)\.site\.com

它包含了http或https?

2 个答案:

答案 0 :(得分:2)

我接近它的方法是利用UriUriBuilder类:

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]);