strtrimで右側から"\n"を(連続していても)取り除きたい
と思ったのですが、うまくいきません。
以下のスクリプトを実行すると p2=3 以外は思った通りに処理されません。
・右側からだと全く取り除かれない
・左側からは1つしか取り除かれない
という結果になります。
note = "\n\na\nb\nc\n\n" mes strf("実行前note: [%s]", note) n = $0D, $0A repeat 2 note = strtrim(note, 2, n(cnt)) ;×右側からだと、1つも改行が取れない ; note = strtrim(note, 1, n(cnt)) ;△左側からだと、1つしか改行が取れない ; note = strtrim(note, 0, n(cnt)) ;×両側からだと、左から1つしか改行が取れない ; note = strtrim(note, 3, n(cnt)) ;○全部からなら、改行が取れる loop mes strf("実行後note: [%s]", note) stop
strtrimは基本的に1バイトしか対応していないと思っていたのですが
以下のスクリプトでは、"あ"でも取り除けます。
ヘルプにも
「p3で指定する文字コードには、全角文字を示す2バイトコードを指定することができます。」
と書いてありました。
しかし、"\n"だとやはりうまくいきません。
note = "ああ\nあ\nい\nう\nえ\nああ" ;○"あ"なら取り除ける ;note = "\n\na\nb\nc\n\n" ;×"\n"でも取り除いてほしいが、うまくいかない mes strf("実行前note: [%s]", note) n = "あ" ;○"あ"なら取り除ける ;n = "\n" ;×"\n"でも取り除いてほしいが、うまくいかない b = wpeek(n) note = strtrim(note, 2, b) ;note = strtrim(note, 1, b) mes strf("実行後note: [%s]", note) stop
このような書き方でも"あ"は取り除かれるので、"\n"でも取り除いてほしいと思います。
strtrimを使わずに"\n"を取り除く他の方法はありますが、strtrimは
連続していても取り除く向きが簡単に指定できますし標準命令なので
strtrimでも幅広く対応できるようになったら、より便利で効率的な書き方ができると思いました。
よろしくお願いします。