[PR]

ワイルドカードを使ってシフトJIS文字列を比較する

戻る

 ワイルドカード('*', '?')の使用可能な文字列比較関数を作る。
 '*' は任意の文字列と一致し、'?' は空文字('\0')を除く任意の一文字と一致する。

//*********************************************************
// 第1引数にワイルドカードを含む文字列を指定する。
// 2つの文字列が一致すれば真、さもなくば偽を返す。
//*********************************************************
int // 一致すれば 真
jmsmatch
	(
		const char *ptn, // ワイルドカード
		const char *str  // 比較する文字列
	)
{
	switch( jmscode(ptn) )
	{
		case '\0':
			return '\0' == *str;
		case '*':
			return jmsmatch( jmsnext(ptn), str )
			    || (('\0' != *str) && jmsmatch( ptn, jmsnext(str) ));
		case '?':
			return ('\0' != *str)
			    && jmsmatch( jmsnext(ptn), jmsnext(str) );
		default:
			return (jmscode(ptn) == jmscode(str))
			    && jmsmatch( jmsnext(ptn), jmsnext(str) );
	}
}//jmsmatch

関連

シフトJIS文字列の判定
シフトJISコードで使用する値
ワイルドカード('*', '?')を使って文字列を比較する


Google
ご意見・ご感想をお聞かせ下さい。匿名で送信できます。

 * 返信が必要な場合には postmaster@katsura-kotonoha.sakura.ne.jp へ直接メールしてください。

水無瀬 優 postmaster@katsura-kotonoha.sakura.ne.jp
IDGは全世界85カ国でIT関連雑誌を発行する出版社です。