データを取得してそれをテキスト ファイルに 1 行ずつ挿入する Perl スクリプトを作成しました。そのファイルを Notepad++ で開くと、テキストの 2 行ごとに空行が区切られているように見えます。例:
AAVX Etracs Daily Short 1 Month S&P
ABCS Guggenheim Abc High Dividend Et
ABI Safety First Trust
ただし、同じファイルを標準の Windows メモ帳で開くと、次のようにスペースなしで表示されます。
AAVX Etracs Daily Short 1 Month S&P
ABCS Guggenheim Abc High Dividend Et
ABI Safety First Trust
問題は、どのメモ帳を信頼すべきか、そしてなぜそれが起こるのかということです。
答え1
これは、終了制御文字が正しくありません。Windows では改行文字をcarriage return
+で表しますline feed
。
Notepad++ では、以下を選択してこれらの文字を確認できます。
ビュー>シンボルを表示>[x] Show End of Line
データが次のようにフォーマットされるようにスクリプトを変更する必要があります。
答え2
設定は
Edit > EOL Conversion
効果はありますか? UNIX に切り替えてみてください。
答え3
通常の Windows EOL に加えて、非 Windows EOL 文字がありますCrLf
。Notepad++ はさまざまな EOL 文字をすべて理解し、すべて表示します。Windows のメモ帳はそれほど賢くなく、非 Windows EOL 文字をスキップします。
私は Perl を知りませんが、この現象が発生するのは、ほとんどの場合、送信する文字列の末尾に Windows 以外の EOL 文字が含まれているためです。文字列の最後の文字の Asc 文字コード値をテストし、それが . の場合はそれを削除しますcarriage return
。
VBAの例
If Asc(Right(sName, 1)) = 13 Then
sName = Left(sName, Len(sName) - 1)
End If