OPTION BASE 0 OPTION CHARACTER BYTE DIM ss$(1000),uu$(1000),AA$(50),BB$(50) LET infile$="AB.txt" LET outfile$="QW.txt" OPEN #1:NAME infile$ OPEN #2:NAME outfile$ ERASE #2 ASK #1: FILESIZE r LET s$="" FOR i=1 TO r CHARACTER INPUT #1: s$(i:i) NEXT i PRINT PRINT "テキスト:" PRINT " ";s$ PRINT INPUT PROMPT "置き換えたい文字列? ":A$ INPUT PROMPT "置き換える文字列? ":B$ PRINT LET AL=LEN(A$) LET BL=LEN(B$) FOR i=1 TO r LET ss$(i)=s$(i:i) LET uu$(i)=ss$(i) NEXT i FOR i=1 TO AL LET AA$(i)=A$(i:i) NEXT i FOR i=1 TO BL LET BB$(i)=B$(i:i) NEXT i LET CL=BL-AL LET G=0 LET h=0 DO CALL kensak(s$,A$,h,k,e) IF e=0 THEN EXIT DO LET G=G+1 LET h=h+k LET X=h-AL+1 PRINT " ";X;"番目の文字列 ";A$;" を ";B$;" に置換します。" FOR i=1 TO BL LET uu$(X+CL*(G-1)-1+i)=BB$(i) NEXT i FOR i=1 TO r+G*CL LET uu$(X+CL*(G-1)-1+BL+i)=ss$(h+i) NEXT i LOOP PRINT PRINT "置換後:" PRINT " "; FOR i=1 TO r+G*CL PRINT uu$(i); NEXT i PRINT PRINT !PRINT #2:uu$; CLOSE #1 CLOSE #2 END EXTERNAL SUB kensak(T$,P$,n,m,Z) DIM TT$(1000),PP$(50) LET TL=LEN(T$) LET PL=LEN(P$) FOR i=1 TO TL LET TT$(i)=T$(i:i) NEXT i FOR i=1 TO PL LET PP$(i)=P$(i:i) NEXT i LET PL0=PL LET S=0 LET Z=O DO UNTIL PL=>TL IF PP$(PL0)<>TT$(PL+n) THEN LET C=1 FOR i=1 TO PL0-1 IF PP$(PL0-i)=TT$(PL+n) THEN EXIT FOR LET C=C+1 NEXT i LET S=C ELSE LET C=1 FOR i=1 TO PL0-1 IF PP$(PL0-i)<>TT$(PL+n-i) THEN EXIT FOR LET C=C+1 NEXT i IF C=PL0 THEN LET m=PL LET Z=Z+1 EXIT DO END IF LET S=C LET C=1 FOR i=1 TO PL0-1 IF PP$(PL0-i)=TT$(PL+n) THEN EXIT FOR LET C=C+1 NEXT i LET S=C END IF LET PL=PL+S LOOP END SUB