文字操作関連マクロの2バイト文字操作中の不具合について
直っているように見えます。
xxx = 'あああ|いいい|ホホホホ' strsplit xxx '|' 3 sendln '# xxx =[' xxx ']' sendln '# groupmatchstr1=[' groupmatchstr1 ']' sendln '# groupmatchstr2=[' groupmatchstr2 ']' sendln '# groupmatchstr3=[' groupmatchstr3 ']' sendln '# groupmatchstr4=[' groupmatchstr4 ']' sendln '# groupmatchstr5=[' groupmatchstr5 ']' int2str sr result sendln '# result=[' sr ']'
$ # xxx =[あああ|いいい|ホホホホ] $ # groupmatchstr1=[あああ] $ # groupmatchstr2=[いいい] $ # groupmatchstr3=[ホホホホ] $ # groupmatchstr4=[] $ # groupmatchstr5=[] $ # result=[3]
TeraTerm Version4.105です。
(匿名) への返信
直っているように見えます。
ソース
xxx = 'あああ|いいい|ホホホホ'
strsplit xxx '|' 3
sendln '# xxx =[' xxx ']'
sendln '# groupmatchstr1=[' groupmatchstr1 ']'
sendln '# groupmatchstr2=[' groupmatchstr2 ']'
sendln '# groupmatchstr3=[' groupmatchstr3 ']'
sendln '# groupmatchstr4=[' groupmatchstr4 ']'
sendln '# groupmatchstr5=[' groupmatchstr5 ']'
int2str sr result
sendln '# result=[' sr ']'
結果
$ # xxx =あああ|いいい|ホホホホ
$ # groupmatchstr1=あああ
$ # groupmatchstr2=いいい
$ # groupmatchstr3=ホホホホ
$ # groupmatchstr4=[]
$ # groupmatchstr5=[]
$ # result=3
(匿名) への返信
直っているように見えます。
元のチケットには誤りが有って、2バイト目が '|' なのは 'ホ' ではなくて 'ポ' ですね。(チケットの詳細は修正しました)
strsplit xxx '|' 3
strsplit で最大数を指定すると、最後(3番目)は分割が行われず残りすべてが入ります。
この二つの要因で問題が出ていないように見えてしまっています。
という変更を行うと問題が残っている事が確認できると思います。
r8682 頃からの修正で、マクロの内部文字コードは Unicode になっています。
現在はうまく動いていると思います。
テストしたところ問題なさそうです。
クローズします。
マクロのstrsplit 関数で、文字列を分割していますが、 全角文字を分割すると、うまく分割できない場合があります。
「あああ|いいい|ポポポポ」という文字を「|」で分割すると 「ポ」の下位バイト(7C)が「|」と一致してしまい、意図したとおりの 分割が出来ませんでした。
マクロ側の2バイト対応や、Unicode対応の予定はないでしょうか。