チケット #37510

文字操作関連マクロの2バイト文字操作中の不具合について

登録: 2017-09-14 13:00 最終更新: 2020-07-01 00:52

報告者:
(匿名)
担当者:
チケットの種類:
状況:
オープン [担当者決定済み]
コンポーネント:
マイルストーン:
優先度:
5 - 中
重要度:
5 - 中
解決法:
受領
ファイル:
なし
投票
点数: 0
No votes
0.0% (0/0)
0.0% (0/0)

詳細

マクロのstrsplit 関数で、文字列を分割していますが、 全角文字を分割すると、うまく分割できない場合があります。

「あああ|いいい|ポポポポ」という文字を「|」で分割すると 「ポ」の下位バイト(7C)が「|」と一致してしまい、意図したとおりの 分割が出来ませんでした。

マクロ側の2バイト対応や、Unicode対応の予定はないでしょうか。

チケットの履歴 (6 件中 3 件表示)

2017-09-14 13:00 更新者: None
  • 新しいチケット "文字操作関連マクロの2バイト文字操作中の不具合について" が作成されました
2019-12-23 15:13 更新者: None
コメント

直っているように見えます。

ソース

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]
(編集済, 2019-12-25 12:00 更新者: doda)
2019-12-23 15:15 更新者: None
コメント

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

2019-12-25 11:57 更新者: doda
  • 詳細が更新されました
2019-12-25 13:48 更新者: doda
  • 担当者(未割り当て) から doda に更新されました
  • 解決法なし から 受領 に更新されました
  • マイルストーン(未割り当て) から Tera Term 5.0 に更新されました
コメント

(匿名) への返信

直っているように見えます。

元のチケットには誤りが有って、2バイト目が '|' なのは 'ホ' ではなくて 'ポ' ですね。(チケットの詳細は修正しました)

strsplit xxx '|' 3

strsplit で最大数を指定すると、最後(3番目)は分割が行われず残りすべてが入ります。

この二つの要因で問題が出ていないように見えてしまっています。

  • 分割対象を 'あああ|いいい|ポポポポ' にする
  • strsplit xxx '|' のように最大数を指定しない

という変更を行うと問題が残っている事が確認できると思います。

2020-07-01 00:52 更新者: zmatsuo
コメント

r8682 頃からの修正で、マクロの内部文字コードは Unicode になっています。

現在はうまく動いていると思います。

添付ファイルリスト

添付ファイルはありません

編集

ログインしていません。ログインしていない状態では、コメントに記載者の記録が残りません。 » ログインする