一文字ずつ確認しましょう。
確認するループの回数は文字列の長さに等しいですね。
ただし、全角文字は全角文字として扱う必要があります。
目的の文字の文字コードが、たまたま全角文字の文字コードの一部と一致してしまうことがあるかもしれません。そうなると、ありもしない文字を出力してしまいます。
全角文字はコードの先頭部分の1バイトを見ればわかるので、もし全角文字の先頭を見つけたらそれに続くもう1バイトも全角文字コードの一部であると判断して読み飛ばしています。
buf ="abcdef\ng h i j k l\nmnopqrstu\nv w x y z\nあかさたabcd"
sdim buf2,strlen(buf)
mes buf
mes "------"
repeat strlen(buf)
if (kanji){
kanji=0
continue // buf2に追加しない.
}
ch=strmid(buf,cnt,1) //1字取り出す
c=peek(ch,0)
if ( ((c>=0x81)&&(c<=0x9f)) || ((c>=0xe0)&&(c<=0xfc)) ) { // 全角の第1バイト
kanji = 1
continue // buf2に追加しない.
}
if (ch="g")or(ch="a")or(ch="t")or(ch="c") {
buf2 += ch
continue
}
; buf2 += ch
loop
mes buf2