; wordrep.as title "wordrep" mes "wordrep 98/7/10" ;[ テキストのバッファを確保 ] alloc buf1,32000 ;元のテキスト alloc buf2,32000 ;変更後のテキスト alloc a1,32000 ;テンポラリ alloc dl,1000 ;ファイルリスト str buf1 str buf2 str a1 buf2="" ;[ ディレクトリ選択 ] dirlist dl,"*.*" ; カレントディレクトリのファイル一覧 pos 100,100 a=0:objsize 120,24 combox a,120,dl objsize 80,40,16 button "ok",*start stop ;[ テキスト読み込み ] *start notesel dl noteget rname,a mes rname ;処理ファイル名の表示 *convert bload rname,buf1 ; テキストファイル読み込み ;[ コンバート開始 ] strlen buf1len,buf1 sw="test" nw="テスト" strlen swl,sw st=0 ;search top ;[ メインループ ] *mainlp instr c,buf1,sw,st ;文字列buf1を検索し、swを探す、答えはcに入る if c=-1:goto *txtcnv2 ;マッチしないので終わりの場合 strmid a1,buf1,st,c ;a1にヒット前をコピー buf2=buf2+a1 buf2=buf2+nw st=st+c+swl ;新しいポインタをセット goto *mainlp ;[ 終了処理 ] *txtcnv2 strmid a1,buf1,st,buf1len-st ;最後のhit+1から文字列の最後まで buf2=buf2+a1 ;[ セーブ ] *txtcnv3 strlen buf2len,buf2 bsave "out.txt",buf2,buf2len end |
今回は文字列の置換です。
サンプルでは”test”を”テスト”という文字に置き換えます。
テキストファイルを作って実験してください。
結果は”out.txt”というファイルに出力されます。
今回の置換では、”元のテキスト”と”変換後のテキスト”と”作業中のテキスト”の3つについて領域を確保します。
検索命令instrで、目的のワードをサーチします。
目的のワードを見つけたら、ワードの直前までを”変換後のテキスト”にコピーし、次に”テスト”ということばをコピーします。
目的のワードが見つからなかったときは、残りのテキスト全てを”変換後のテキスト”にコピーします。
今回のサンプルには、複数の置換を行う”wordrepm.as”も同梱しておきました。
wordrep.asをダウンロード。
目次に戻る