C#で文字列を比較したい
最近の話ですが、私はC#でタスクマネージャー的なものを作っています。
まぁ、「普通のタスクマネージャー」も良いんですけどね、たまに使い勝手が悪い時があって、「さっきのプロセスどこいった!?」みたいなことがあるんですよ。
そんなこと皆さんないですか?
(CUIユーザーとかならコマンド叩いてすぐにどうにかなるのかもしれないのですが...)
そこで考えたのが、「自分でタスクマネージャー作れば良いじゃん!」ってことです。
とはいえ、C#は学生時代以来ほとんど触ってなくて、手探りの状態で開発してるわけです。
(例えばインスタンスの作り方とか、配列の作り方とか)
そしてですね、タイトルにあるような問題に差し掛かりました。
文字列の比較ってどうすればいいの?
任意の文字列が含まれてる場合の処理はどうすればいいの?
例えば、エクセルVBAとか、powerShellとかは、「ワイルドカード」を使って、ちょちょいちょいなのですが、C#の場合これがまぁ検索結果に出てこない。
いや本当に出てこない(大事なことなので)
「C# 文字列比較 ワイルドカード」で調べたのですが、全く意味不明でした。
正直自分の理解力が薄いせいなのですが...
とりあえず、前置きはこのくらいにして、結果的には見つかりました。
それが、「Regex.IsMatch()」メソッドです。
これがまぁ、便利でして、百聞は一見に如かずです。
構文を見てみましょう。
using System.Text.RegularExpressions;
Regex.IsMatch("比較される文字列", "検索する文字列")
上記、「検索する文字列」が「比較される文字列」に当てはまれば「true」、当てはまらなければ「false」が返ってくる仕組みです。
簡単でしょ?
つまり以下のようにプログラムを組むとします。
using System.Text.RegularExpressions;
void main()
{
//比較される文字列を設定
string aString = "aaa";
//「a」が入っているか調べる
if (Regex.IsMatch((aString), "a"))
{
Console.WriteLine("aは含まれてる");
}
else
{
Console.WriteLine("aは含まれてない");
}
//「b」が入っているか調べる
if (Regex.IsMatch((aString), "b"))
{
Console.WriteLine("bは含まれてる");
}
else
{
Console.WriteLine("bは含まれてない");
}
}
main();
上記コードを実行すると以下のようになります。
aは含まれてる
bは含まれてない
以上、C#の文字列比較方法でした。
まぁこれ以外にも沢山あると思いますが、これが個人的に一番使いやすいかなって思いました。