public static ExtractHashtagEntities ( string text ) : IEnumerable |
||
text | string | |
return | IEnumerable |
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 = ""; } }
public void ExtractHashtagEntities_SurrogatePairTest() { var entity = TweetExtractor.ExtractHashtagEntities("🍣 #sushi").Single(); Assert.Equal(new[] { 2, 8 }, entity.Indices); Assert.Equal("sushi", entity.Text); }
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 = ""; } }
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); }
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); }