|
ヒットしなかった場合は引数文字列をそのまま返す関数の追加を要望します。
$s = dllfuncstr("Sub", "b+", "abab", "X", 0); // 最初のヒットを置き換え
$s = dllfuncstr("GSub", "b+", "abab", "X", 1); // すべて置き換え
param4: 大文字小文字の区別オプション
コンパイルエラーも引数をそのまま返すこととし、エラーは"FindRegular"の戻り値
で判定するか、専用の関数を用意する。
#n = dllfunc("Compile", ""); // 直前のコンパイル結果
#n = dllfunc("Compile", "[\t ]+"); // 引数パターンのコンパイル結果
要望理由:
ReplaceRegularは、ヒットしなかった場合、空文字を返します。
たとえば、以下の文では空文字が返ってきます。
$text = "\t\t"; // "text";
$s = dllfuncstr("ReplaceRegular", "^[\t ]+|[\t ]+$", $text, 0, "", 1);
空文字が返ってくると、それは置き換えた後の文字列なのか、ヒットしなかった結果
の文字列なのか、コンパイルエラーなのかを判定せねばならず、厄介でありどうも納
得できません。
・コンパイルエラー
エラーなのだから、値が不正になるのは仕方がない(マクロ作者の責任)。
・ヒットしなかった
何も置き換えしなかったと言う置き換えの結果が欲しい
(巷のスクリプト系は、引数文字列をそのまま返す)
|
|