ExtractHashtagEntities() public static method

テキストからハッシュタグを抽出してエンティティとして返します
public static ExtractHashtagEntities ( string text ) : IEnumerable
text string
return IEnumerable
示例#1
0
        private async Task SetDescriptionAsync(string descriptionText, TwitterEntities entities, CancellationToken cancellationToken)
        {
            if (descriptionText != null)
            {
                foreach (var entity in entities.Urls)
                {
                    entity.ExpandedUrl = await ShortUrl.Instance.ExpandUrlAsync(entity.ExpandedUrl);
                }

                // user.entities には urls 以外のエンティティが含まれていないため、テキストをもとに生成する
                entities.Hashtags     = TweetExtractor.ExtractHashtagEntities(descriptionText).ToArray();
                entities.UserMentions = TweetExtractor.ExtractMentionEntities(descriptionText).ToArray();

                var html = TweetFormatter.AutoLinkHtml(descriptionText, entities);
                html = this.mainForm.createDetailHtml(html);

                if (cancellationToken.IsCancellationRequested)
                {
                    return;
                }

                this.DescriptionBrowser.DocumentText = html;
            }
            else
            {
                this.DescriptionBrowser.DocumentText = "";
            }
        }
示例#2
0
        public void ExtractHashtagEntities_SurrogatePairTest()
        {
            var entity = TweetExtractor.ExtractHashtagEntities("🍣 #sushi").Single();

            Assert.Equal(new[] { 2, 8 }, entity.Indices);
            Assert.Equal("sushi", entity.Text);
        }
示例#3
0
        private async Task SetDescriptionAsync(string?descriptionText, TwitterEntities?entities, CancellationToken cancellationToken)
        {
            if (descriptionText != null)
            {
                var urlEntities = entities?.Urls ?? Array.Empty <TwitterEntityUrl>();

                foreach (var entity in urlEntities)
                {
                    entity.ExpandedUrl = await ShortUrl.Instance.ExpandUrlAsync(entity.ExpandedUrl);
                }

                // user.entities には urls 以外のエンティティが含まれていないため、テキストをもとに生成する
                var mergedEntities = urlEntities.AsEnumerable <TwitterEntity>()
                                     .Concat(TweetExtractor.ExtractHashtagEntities(descriptionText))
                                     .Concat(TweetExtractor.ExtractMentionEntities(descriptionText))
                                     .Concat(TweetExtractor.ExtractEmojiEntities(descriptionText));

                var html = TweetFormatter.AutoLinkHtml(descriptionText, mergedEntities);
                html = this.mainForm.createDetailHtml(html);

                if (cancellationToken.IsCancellationRequested)
                {
                    return;
                }

                this.DescriptionBrowser.DocumentText = html;
            }
            else
            {
                this.DescriptionBrowser.DocumentText = "";
            }
        }
示例#4
0
        public void ExtractHashtagEntities_Test()
        {
            var entity = TweetExtractor.ExtractHashtagEntities("hogehoge #test").Single();

            // Indices は「#test」の範囲を指すが、Text には「#」を含めない
            Assert.Equal(new[] { 9, 14 }, entity.Indices);
            Assert.Equal("test", entity.Text);
        }
示例#5
0
        public void ExtractHashtagEntities_MultipleTest()
        {
            var entities = TweetExtractor.ExtractHashtagEntities("hogehoge #test #test2").ToArray();

            Assert.Equal(2, entities.Length);
            Assert.Equal(new[] { 9, 14 }, entities[0].Indices);
            Assert.Equal("test", entities[0].Text);
            Assert.Equal(new[] { 15, 21 }, entities[1].Indices);
            Assert.Equal("test2", entities[1].Text);
        }