[ 新規に投稿する ]

getlinetext の文末改行についてNo.10313
おすぎ さん 24/04/27 09:54 [ コメントを投稿する ]
お世話様です。

立て続けにすみません。

getlinetext を動作させると、
文末に改行が入るようです。

改行なしの文字列だけにしてもらうことは、可能でしょうか?
それとも、改行を入れて欲しいという要望があるのでしょうか?

よろしくお願いします。
[ ]
RE:10313 getlinetext の文末改行についてNo.10316
こみやんま さん 24/04/28 11:53 [ コメントを投稿する ]
  >改行なしの文字列だけにしてもらうことは、可能でしょうか?
>それとも、改行を入れて欲しいという要望があるのでしょうか?

>改行なしの文字列だけにしてもらうことは、可能でしょうか?
>それとも、改行を入れて欲しいという要望があるのでしょうか?

要望に左右されるというよりも、
そのように「先頭から文末の全ての文字を含める」のがプログラムでは通常のAPIの在り方と言えます。
「自動的に行末にもしも改行があれば、その時だけこっそりカット」といった処理は実際には混乱を招きます。

行の文字は、「先頭から末尾」までを指します。
行選択といった場合も「先頭から末尾(末尾が改行ならそれを含む)」までを指します。
そのため、末尾に改行文字がある場合、それは文字として扱われるため、改行も含まれるというのが通常の動作です。

一方で、「最後の行の行末=文末」に改行文字が「ない」場合、その行の行末には改行文字が含まれないことになります。文末が改行であれば、その行には改行がやはり含まれます。

原則として、「各行を処理していく際に、全てを足し合わせると全体の文字列と完全に一致する」ように関数が提供されるのが一般的です。

例えば、より細かい単位である「1文字ずつ処理を行う関数」が提供されるならば、やはりそれも全て順繰りに捜査したものを足し合わせると「全体の文字列と『完全に一致』する」のが一般的な動作です。

// 改行を除去する例
js {
   // 全体の文字列を改行でsplitするのは、全ての行を「改行を抜いた状態で」処理する際はよく利用される。
   debuginfo(2);
   var all = gettotaltext();
   var lines = all.split(/\r?\n/);
   for(var i=0; i<lines.length; i++) {
      console.log(lines[i] + "\r\n");
   }

   // 単行を取得して、それをカットするなら下記のようになる
   var line = getlinetext();
   line = line.replace(/\r?\n/, "");
   console.log(line + "\r\n");
}
[ ]
RE:10316 getlinetext の文末改行についてNo.10317
おすぎ さん 24/04/30 09:36 [ コメントを投稿する ]
  こみやんま さん

ご回答ありがとうございます

「改行も末尾である」ということ、理解しました。

改行を除去するマクロの例をありがとうございました。
[ ]

[ 新規に投稿する ]