子串检查有两种可能性

时间:2016-05-17 20:19:46

标签: c# substring indexof tweets

假设我有一个列表,列表由Tweets填充,下面有两个例子:

    Tweet 1 = RT @randomuser_: what you saying
    Tweet 2 = @randomusertwo hello this is a tweet

正如您可以从推文中看到的那样,有两种可能性,以冒号或空格结尾。我目前的实现只允许一次检查一个,见下文:

    List<string> Tweets = new List<string>();
    foreach (var men in Tweets)
        {
            int pFrom = men.IndexOf("@") + "@".Length;
            int pToColon = men.LastIndexOf(":");

            //int pToSpace = men.LastIndexOf(" ");

            string result = mention.Substring(pFrom, pToColon - pFrom);
            listBox1.Items.Add(result);
        }

如何检查用户名是否以冒号或空格结尾? 编辑:我知道LastIndexOf返回一个整数,但不知道如何区分推文

1 个答案:

答案 0 :(得分:-3)

虽然有些用户提供了使用API​​的提示,但如果您需要一种在文本中查找Twitter用户名的方法,则可以轻松使用Regex库。这不是什么值得羞耻的事。

var Tweets = new List<string>();
Tweets.Add("RT @randomuser_: what you saying some@some.com");
Tweets.Add("@randomusertwo hello this is a tweet");
var usernames = new List<string>();
foreach (var men in Tweets)
{
    var regex = new Regex(@"(?<=^|(?<=[^a-zA-Z0-9-_\.]))@([A-Za-z]+[A-Za-z0-9]+)");
    foreach (Match match in regex.Matches(men))
    {
        usernames.Add(match.Value);
    }
}

编辑:排除电子邮件,从此答案中复制正则表达式:regex for Twitter username