←前へ 次へ→ 機能別Q&A 質問番号順Q&A 秀丸エディタQ&A集トップ

[HMM0074A]

●文字列の後方から文字列を検索

Q. 文字列の後方から文字列を検索する方法はありますか?ロングファイル名での拡張子取得で、「.」を後方から検索したいのですが。

A. 文字列の先頭から文字列が見つからなくなるまで複数回検索することで可能です。

// サンプルマクロ(拡張子の取得例)
$FNm = filename;
//まずフォルダ部分を除く
call strstr2 $FNm, "\\";
if( ##return != -1) $FNm = rightstr( $FNm, strlen( $FNm ) - ##return );
call strstr2 $FNm, ".";
if( ##return == -1 ) $Exp = ""; // 拡張子なし
else $Exp = rightstr( $FNm, strlen( $FNm ) - ##return - 1 ); // 拡張子あり
//filetype と同じ仕様にするなら、
//if( ##return == -1 ) $Exp = "."; // 拡張子なし
//else $Exp = rightstr( $FNm, strlen( $FNm ) - ##return ); // 拡張子あり
//とすれば良い
message "拡張子は[" + $Exp + "]です。";
endmacro;
//----------------------------------------------------------
// 文字列の後方から文字列を検索
//
// (引数) $$1: 文字列、$$2: 検索文字列
// (返り値) ##return: 見つかった位置(0オリジン)、-1:見つからなかった
//----------------------------------------------------------
strstr2:
##RC = -1;
$$Wk = $$1;
##Flg = 1;
##Size = strlen($$2);
while( 1 )
{
##Pos = strstr( $$Wk, $$2 );
if( ##Pos == -1 )
{
break;
}
##RC = ##RC + ##Pos + ##Flg;
##Flg = ##Size;
$$Wk = rightstr( $$Wk, strlen( $$Wk ) - ##Pos - ##Size );
}
return ##RC;
// サンプルマクロ(ここまで)


←前へ 次へ→ 機能別Q&A 質問番号順Q&A 秀丸エディタQ&A集トップ