データを取得してテキストファイルに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
問題は、どのメモ帳を信頼すべきか、そしてなぜそれが起こるのかということです。
これは、 [〜#〜] eol [〜#〜] 制御文字が正しくない場合に発生します。 Windowsは、改行をcarriage return
+ line feed
で表します。
Notepad ++では、次を選択してこれらの文字を確認できます。
表示>記号を表示> [x] Show End of Line
データが次のようにフォーマットされるように、スクリプトを変更する必要があります。
設定はありますか
Edit > EOL Conversion
何か効果はありますか? UNIXに切り替えてみてください。
通常のWindowsEOL CrLf
に加えて、Windows以外のEOL文字があります。 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