//--------------------------------------------------------------------------- // SUB : 文字列中の文字列の置換をするルーチン // [Usage] : // call SUB $$str, $$s_str, $$r_str, ##n; // $$c_str = $$return; // // $$str : 文字列 // $$s_str : 検索する文字列 // $$r_str : 置換する文字列 // ##n : $$strの最初から何個の$$s_strを置換するか。 // = 0 の場合は全てを置換する。 // $$c_str : 置換された結果の文字列 // //--------------------------------------------------------------------------- // サンプル: // // パス名中の "\" を "/" に変換 // $$pathname = "c:\\usr\\local\\bin\\gcc.exe"; // call SUB $$pathname, "\\", "/", 0; // $$pathname = $$return; // "c:/usr/local/bin/gcc.exe" に変換 // endmacro; //--------------------------------------------------------------------------- // SUB: ##l = strlen($$1); ##a = strlen($$2); ##b = strlen($$3); ##s = 0; ##i = 0; while( 1 ){ ##c = strstr( midstr( $$1, ##s, ##l ), $$2 ); if( ##c == -1 ) break; $$1 = leftstr( $$1, ##s+##c ) + $$3 + midstr( $$1, ##s+##c+##a, ##l ); ##s = ##s + ##c + ##b; ##i = ##i + 1; if( ##i == ##4 ) break; } return $$1; //---------------------------------------------------------------------------