HSPポータル
サイトマップ お問い合わせ


HSPTV!掲示板


未解決 解決 停止 削除要請

2019
0705
YOS G-spec入り乱れた改行コードでのsplit3解決


YOS G-spec

リンク

2019/7/5(Fri) 21:11:33|NO.87815

CrLf, Cr, Lfの混じった文字列を分割しようとしていますが、
strrepでLfにまとめた後置き換えても端にゴミが残っているようです。
strtrimで端っこのLfを排除すれば正常に見えるようになるのですがどこか釈然としません。

もし、普通にsplitして改行コードをきれいに置き換えられる方法があれば教えてください。
よろしくお願いします。

#runtime "hsp3cl"
sdim s #define adef "asdff\nastgrw3h\r\nwtegole\rkserlhge3t\nearsgh\nergh\rsagr\r\nerghe\r" a=adef strrep a,"\r\n","\n" strrep a,"\r","\n" split a,"\n",s foreach s mes "<"+s.cnt+">" loop mes "------------------" foreach s mes "<"+strtrim(s.cnt,1,10)+">" loop



この記事に返信する


Velgail

リンク

2019/7/5(Fri) 22:43:07|NO.87816

勘違いのために起きている現象ですね。

\r = CR(13)
\n = CRLF(13, 10)
です。
そのため

strrep a,"\r\n","\n"
strrep a,"\r","\n"

この瞬間にCRLFLFという謎コードが生まれ

split a,"\n",s

をしたところでsの先頭にLFが残ってしまうという流れです。

LFコードはpokeを使って作るようにしてください。



YOS G-spec

リンク

2019/7/5(Fri) 23:51:31|NO.87817

>>Velgallさん
なるほど、色々と腑に落ちました。
HSPには本来"\n"とされているエスケープシーケンスは存在せず、
本来の"\r\n"はHSP上だと"\n"となっているということなんですね。
ありがとうございました。

#runtime "hsp3cl"
sdim lf:poke lf,,10 cr="\r" crlf="\n" a="asdff"+lf+"astgrw3h"+crlf+"wtegole"+cr+"kserlhge3t"+lf+"earsgh"+lf+"ergh"+cr+"sagr"+crlf+"erghe"+cr+"" sdim s strrep a,crlf,lf strrep a,cr,lf split a,lf,s foreach s mes "<"+s.cnt+">" loop



YOS G-spec

リンク

2019/7/5(Fri) 23:52:02|NO.87818

解決をつけ忘れました。



ONION software Copyright 1997-2018(c) All rights reserved.