複雑な条件や、ワイルドカードを利用する場合は正規表現を利用した文字列検索を利用します。正規表現を利用した文字列検索はこちらの記事を参照してください。
文字列内に指定した文字列が存在するか検索するコードを紹介します。
文字列内に文字列が含まれているかを検索する場合は IndexOfメソッドを利用します。
下記の書式になります。検索文字列がstringオブジェクト内に見つかると、IndexOfメソッドの戻り値に検索文字列が見つかった位置を返します。
下図のUIを作成します。シングルラインのTextBoxを2つ、マルチラインのTextBoxをひとつ、Buttonを1つ配置します。
"Text"のテキストボックスが"textBox_Text", "Search"のテキストボックスが"textBox_Search", 複数行テキストボックスが"textBox_Output"になります。
下記のコードを記述します。
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace SearchString
{
public partial class FormSearchNext : Form
{
public FormSearchNext()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
string text = textBox_Text.Text;
string search = textBox_Search.Text;
int pos = text.IndexOf(search);
textBox_Output.Text += string.Format("{0:d} 文字目で該当しました。\r\n",pos);
}
}
}
string text = textBox_Text.Text;
string search = textBox_Search.Text;
入力された検索対象の文字列を"text"変数に、検索文字列を"search"変数に代入します。
int pos = text.IndexOf(search);
検索対象の文字列のIndexOf()メソッドを呼び出して検索します。メソッドの第一引数に検索文字列を与えます。text文字列内にsearchの文字列が見つかった場合、見つかった位置のインデックスが戻り値で返ります(先頭で一致した場合は0が返ります)。文字列が見つからない場合は-1が返ります。 textBox_Output.Text += string.Format("{0:d} 文字目で該当しました。\r\n",pos);
検索結果を出力用のテキストボックスに表示します。
プロジェクトを実行します。下図のウィンドウが表示されます。
テキストボックスに入力します。今回は以下の文字列を入力しました。
[Search]ボタンをクリックします。検索対象文字列の6文字目に"シロクマ"が含まれるため、インデックス番号の5が返されます。
検索対象文字列内に一致する文字列がない場合は"-1"が返ります。