:CATEGORIES: C#
元はWindows10のVisual Studioで,.NET Coreとかのコンソールとして作成したものでした。そちらはnamespaceがConsoleAppTwitterとなっていました。これがC#で作成した初めてのプログラムですが,Windows10では先にGUIでウィンドウ処理を行っていました。
```
using System;
using System.Collections.Generic;
using System.IO;
namespace ttt
{
class Program
{
static void Main(string[] args)
{
string tweetText = TweetsGet();
Console.WriteLine(tweetText);
}
static string TweetsGet()
{
//var screenName = cmb1.SelectedValue.ToString();
var screenName = "motoken_tw";
var str = "";
var tokens = CoreTweet.Tokens.Create(
("ConsumerKey",
"ConsumerSecret",
"AccessToken",
"AccessSecret");
// var session = CoreTweet.OAuth.Authorize(("ConsumerKey", "ConsumerSecret", "AccessToken", "AccessSecret");
// var url = session.AuthorizeUri; // -> user open in browser
// //get pin
// tokens = CoreTweet.OAuth.GetTokens(session, "PIN code");
var parm = new Dictionary
parm["count"] = 200;
parm["screen_name"] = screenName;
parm["tweet_mode"] = "extended";
var tweets = tokens.Statuses.UserTimeline(parm);
int i = 1;
foreach (var tweet in tweets)
{
if (tweet.RetweetedStatus == null)
{
var tw_url = "";
tw_url = "https://twitter.com/" + tweet.User.ScreenName + "/status/" + tweet.Id;
str = str + string.Format("\n---------{0:D3}---------\n", i);
str = str + "TW " + tweet.User.Name + "(@" + tweet.User.ScreenName + ") 日時: " + tweet.CreatedAt.DateTime.AddHours(9) + " URL: " + tw_url + "\r\n" + System.Text.RegularExpressions.Regex.Replace(
tweet.FullText, "^", "> ", System.Text.RegularExpressions.RegexOptions.Multiline) + "\r\n";
}
else
{
var tw_url = "https://twitter.com/" + tweet.User.ScreenName + "/status/" + tweet.Id;
var rt_url = "https://twitter.com/" + tweet.RetweetedStatus.User.ScreenName + "/status/" + tweet.RetweetedStatus.Id;
str = str + string.Format("\n---------{0:D3}---------\n", i);
str = str + "RT " + tweet.User.Name + "(@" + tweet.User.ScreenName + ") |" + tweet.RetweetedStatus.User.Name + "(@" + tweet.RetweetedStatus.User.ScreenName + ") 日時:" + tweet.CreatedAt.DateTime.AddHours(9) + "/" + tweet.RetweetedStatus.CreatedAt.DateTime.AddHours(9) + " URL: " + tw_url + " " + rt_url + "\r\n" + System.Text.RegularExpressions.Regex.Replace(
tweet.FullText, "^", "> ", System.Text.RegularExpressions.RegexOptions.Multiline) + "\r\n";
}
i = i + 1;
}
return str;
}
}
}
```
tweet.CreatedAt.DateTime.AddHours(9) という部分でツイートの時刻を日本時間に変更しています。
よくみると改行コードが\r\nでWindowsのままになっていましたが,Linuxの環境でも問題はなさそうでした。
他に簡潔な方法があるのかもしれないですが,System.Text.RegularExpressions.Regex.Replace(tweet.FullText, "^", "> ", System.Text.RegularExpressions.RegexOptions.Multiline) は,行頭に引用符を付けるだけの処理です。
Rubyだと#{tweet_text.gsub(/^/,'> ')} だけで終わる処理です。
```
using System.Text.RegularExpressions;
……省略……
bool result = Regex.IsMatch("{検査対象文字列}", "{正規表現パターン}");
[source:] 正規表現を使って文字列がパターンに一致するか調べるには?[C#/VB]:.NET TIPS - @IT https://www.atmarkit.co.jp/ait/articles/1701/25/news025.html
```
やはり,ここでusingの出番があったようです。「using System.Text.RegularExpressions;」と宣言を行い,Regex.IsMatch("{検査対象文字列}", "{正規表現パターン}");と使う方法があるようです。
次の方法の方がよさそうです。
```
using System.Text.RegularExpressions;
……省略……
var rx = new Regex("{正規表現パターン}", RegexOptions.Compiled);
bool result = rx.IsMatch("{検査対象文字列}" );
[source:] 正規表現を使って文字列がパターンに一致するか調べるには?[C#/VB]:.NET TIPS - @IT https://www.atmarkit.co.jp/ait/articles/1701/25/news025.html
```
VBでは,C#のusingの部分が,Importsとなるようですが,Visual Basicでは見たことがなく,使った覚えがありません。
0 件のコメント:
コメントを投稿