投稿者:ten 投稿日:2023/10/27(Fri) 15:57:49 No.2876
いつもお世話になっております。ちょっと詰まってしまったので・・・
文字列の最後に改行が入っているかもしれない時、「改行があるなら、それを削除しておく」という作業を行いたいのですが、文字列最後の改行が上手く検出できません。
---
text=「あいうえお[改行]かきくけこ[改行]」
もしtextの末尾から1文字取り出したものが「[改行]」であるなら
「改行です」を表示する
text=textの末尾から1文字消す
もし終わり
---
末尾が通常の文字であれば、上記で上手く動きます。例えば、
text=「あいうえお。」
とし、末尾の「。」を検出する・・・これは、問題ありません。
サイト内をうろうろし、
もし[textの末尾から1文字取り出したものが改行である]なら
という表現も使ってみたのですが、やはり駄目でした。どうすればいいでしょう?
投稿者:アーク 投稿日:2023/10/27(Fri) 16:32:10 No.2877
ten さん、こんにちは。アークです。
遣り方は幾つか在りますが ten さんのやり方に近い方法も有ります。
アスキーコードの始めの方は特殊なものが並んでいます。
普通に文字として扱えないものが多いです。
改行もその一つです。
二行目を下記の様にする事で希望する結果が得られると思います。
もし(textの末尾から1文字取り出したもの)のアスキー番号が10であるなら
投稿者:ten 投稿日:2023/10/27(Fri) 20:43:09 No.2878
ありがとうございます!
その方法も実は考えたのですが、「ASCIIコード範囲外」の時に大丈夫だろうか、という不安があって・・・
すみません、他の方法があれば、お教え下さい
投稿者:陸 投稿日:2023/10/28(Sat) 07:21:55 No.2879
こんにちは。
まず前提として、改行を表すコードはCRとLFの2種類あり、OSによってそれらの組み合わせが違います。
Windows:CRLF
Macintosh:CR
Linux:LF
ただし、エディタなどの指定によって、これらのOSごとの組み合わせとは異なる場合があります。
さて、前置きが長くなりましたが、プロデルの「[改行]」は、標準的なWindowsの改行コード「CRLF」が利用されています。
そのため、文字数的には2文字になるようです。
とりあえず、提示いただいたコードをこんな感じに修正したらうまく動くようです。
ポイントとしては、「もし」分で「で終わる」を使っているのと、文字列を消す際に末尾から2文字を指定しています。
このような変換の際、私はいつも正規表現でやってしまうので、正規表現を使わずに書いたのは久々でした。
※デバッグのために「textを表示」という1行を入れていますが、不要であれば消してください。
----------
text=「あいうえお[改行]かきくけこ[改行]」
もしtextが「[改行]」で終わるなら
「改行です」を表示する
text=textの末尾から2文字消す
textを表示
もし終わり
----------
ちなみに、別の改行コードが混ざったファイルを読み込んで利用したり、HTTPでWebから取得したデータを表示する際は、別途改行コードを統一してあげる必要があるため、注意してください。
以上、長くなりましたが、参考になれば幸いです。
それでは。
投稿者:ten 投稿日:2023/10/28(Sat) 18:41:46 No.2880
ありがとうございます。そうか、2文字と判断するべきだったんですね。〜で終わる、という書き方の存在にも気づいていませんでした(知らないことがたくさんですねえ)
手元でやってみたところ、上手く行きました。ついでに、ちょっと削る文字数でどうなるか、確かめてみました。
1文字だけ削ってテキストエディタで確認したところ、改行コードがCRになってしまっていました(元はCRLF)。知らないままだと危なかった・・・
なるほど、正規表現!プロデルでは、上手く使えていませんが、いずれ勉強して使えるようになりたいと思っています。今回は、教えて頂いた方法で十分上手く回るので、これで行こうと思います。
ありがとうございました!
- WebForum -