C# サンプル集 |
Visual Basic 中学校 > C# サンプル集 > C# サンプル集目次 >
文字列を検索する
2021/10/24
目次
文字列内に「カペー」が含まれるか調べる
string value = "ユーグ・カペーはカペー朝を開きましたが実体は地方の諸侯程度でした。";
if (value.Contains("カペー"))
{
System.Diagnostics.Debug.WriteLine("カペーが含まれています。");
}
これでもできます。
string value = "ユーグ・カペーはカペー朝を開きましたが実体は地方の諸侯程度でした。";
if (System.Text.RegularExpressions.Regex.IsMatch(value, "カペー"))
{
System.Diagnostics.Debug.WriteLine("カペーが含まれています。");
}
これでもできます。
string value = "ユーグ・カペーはカペー朝を開きましたが実体は地方の諸侯程度でした。";
var results = System.Text.RegularExpressions.Regex.Matches(value, "カペー");
if (results.Count > 0)
{
System.Diagnostics.Debug.WriteLine("カペーが含まれています。");
}
文字列内に「カペー」がいくつ含まれるか調べる
string value = "ユーグ・カペーはカペー朝を開きましたが実体は地方の諸侯程度でした。";
var results = System.Text.RegularExpressions.Regex.Matches(value, "カペー");
System.Diagnostics.Debug.WriteLine("カペーの数:" + results.Count); // 2
これでもできます。同じ検索を何度も実行する場合は、変数 re を使いまわせるこちらの方が効率的です。
string value = "ユーグ・カペーはカペー朝を開きましたが実体は地方の諸侯程度でした。";
var re = new System.Text.RegularExpressions.Regex("カペー");
var results = re.Matches(value);
System.Diagnostics.Debug.WriteLine("カペーの数:" + results.Count); // 2
文字列内の最初の「カペー」の位置を取得する
string value = "ユーグ・カペーはカペー朝を開きましたが実体は地方の諸侯程度でした。";
int index = value.IndexOf("カペー");
if (index >= 0)
{
System.Diagnostics.Debug.WriteLine($"最初のカペーの位置:{index + 1}"); // 5
}
これでもできます。
string value = "ユーグ・カペーはカペー朝を開きましたが実体は地方の諸侯程度でした。";
var result = System.Text.RegularExpressions.Regex.Match(value, "カペー");
if (result.Success)
{
System.Diagnostics.Debug.WriteLine($"最初のカペーの位置:{result.Index + 1}"); // 5
}
文字列内の最後の「カペー」の位置を取得する
string value = "ユーグ・カペーはカペー朝を開きましたが実体は地方の諸侯程度でした。";
int index = value.LastIndexOf("カペー");
if (index >= 0)
{
System.Diagnostics.Debug.WriteLine($"最後のカペーの位置:{index + 1}"); // 9
}
これでもできます。
string value = "ユーグ・カペーはカペー朝を開きましたが実体は地方の諸侯程度でした。";
var results = System.Text.RegularExpressions.Regex.Matches(value, "カペー");
int index = results[results.Count - 1].Index; //results.Last().Index でもOK
System.Diagnostics.Debug.WriteLine($"最後のカペーの位置:{index + 1}"); // 9
メモ:「カペー」が2つ以上含まれない場合エラーになります。該当が2つ以上あるかは results.Count を調べるとわかります。
文字列内の2番目の「カペー」の位置を取得する
string value = "ユーグ・カペーはカペー朝を開きましたが実体は地方の諸侯程度でした。";
int index1 = value.IndexOf("カペー"); //1番目のカペーの位置
int index2 = value.IndexOf("カペー", index1 + 1); //2番目のカペーの位置
System.Diagnostics.Debug.WriteLine($"2番目のカペーの位置:{index2 + 1}"); // 9
メモ:「カペー」が2つ以上含まれない場合エラーになります。該当があったかは IndexOf の戻り値を調べるとわかります。戻り値が -1 のとき該当がないことを示しています。
これでもできます。
string value = "ユーグ・カペーはカペー朝を開きましたが実体は地方の諸侯程度でした。";
var results = System.Text.RegularExpressions.Regex.Matches(value, "カペー");
int index2 = results[1].Index;
System.Diagnostics.Debug.WriteLine($"2番目のカペーの位置:{index2 + 1}"); // 9
メモ:「カペー」が2つ以上含まれない場合エラーになります。該当が2つ以上あるかは results.Count を調べるとわかります。
これでもできます。同じ検索を何度も実行する場合は、変数 re を使いまわせるこちらの方が効率的です。
string value = "ユーグ・カペーはカペー朝を開きましたが実体は地方の諸侯程度でした。";
var re = new System.Text.RegularExpressions.Regex("カペー");
var results = re.Matches(value);
int index2 = results[1].Index; //2番目のカペーの位置
System.Diagnostics.Debug.WriteLine($"2番目のカペーの位置:{index2 + 1}"); // 9
メモ:「カペー」が2つ以上含まれない場合エラーになります。該当が2つ以上あるかは results.Count を調べるとわかります。
文字列内のすべての「カペー」の位置を取得する
string value = "ユーグ・カペーはカペー朝を開きましたが実体は地方の諸侯程度でした。";
var results = System.Text.RegularExpressions.Regex.Matches(value, "カペー");
foreach (System.Text.RegularExpressions.Match result in results)
{
System.Diagnostics.Debug.WriteLine($"カペーの位置は {result.Index + 1} 文字目です。");
}
これを実行すると次の通りに出力されます。
カペーの位置は 5 文字目です。
カペーの位置は 9 文字目です。
これでもできます。同じ検索を何度も実行する場合は、変数 re を使いまわせるこちらの方が効率的です。
string value = "ユーグ・カペーはカペー朝を開きましたが実体は地方の諸侯程度でした。";
var re = new System.Text.RegularExpressions.Regex("カペー");
var results = re.Matches(value);
foreach (System.Text.RegularExpressions.Match result in results)
{
System.Diagnostics.Debug.WriteLine($"カペーの位置は {result.Index + 1} 文字目です。");
}
これを実行すると次の通りに出力されます。
カペーの位置は 5 文字目です。
カペーの位置は 9 文字目です。
これでもできます。
string value = "ユーグ・カペーはカペー朝を開きましたが実体は地方の諸侯程度でした。";
int index = value.IndexOf("カペー");
while (index != -1)
{
System.Diagnostics.Debug.WriteLine($"カペーの位置は {index + 1} 文字目です。");
index = value.IndexOf("カペー", index + 1);
}
これを実行すると次の通りに出力されます。
カペーの位置は 5 文字目です。
カペーの位置は 9 文字目です。
「カイン」または「アベル」を検索する
string value = "創世記によるとアダムの息子カインは嫉妬で弟アベルを殺したが、その具体的な理由は記載されていない。";
var results = System.Text.RegularExpressions.Regex.Matches(value, "(カイン|アベル)");
foreach (System.Text.RegularExpressions.Match result in results)
{
System.Diagnostics.Debug.WriteLine($"ヒット:{result.Value} 開始位置:{result.Index}");
}
これを実行すると次の通りに出力されます。
ヒット:カイン 開始位置:13
ヒット:アベル 開始位置:21
「中臣鎌足」または「藤原鎌足」を検索する
string value = "中大兄皇子は中臣鎌足と大化の改新を推進。鎌足は藤原鎌足となり藤原氏の祖となった。";
var results = System.Text.RegularExpressions.Regex.Matches(value, "(中臣|藤原)鎌足");
foreach (System.Text.RegularExpressions.Match result in results)
{
System.Diagnostics.Debug.WriteLine($"ヒット:{result.Value} 開始位置:{result.Index}");
}
これを実行すると次の通りに出力されます。
ヒット:中臣鎌足 開始位置:6
ヒット:藤原鎌足 開始位置:23