Ich habe ein Perl-Skript erstellt, das Daten abruft und diese Zeile für Zeile in eine Textdatei einfügt. Wenn ich diese Datei mit Notepad++ öffne, scheint zwischen jeweils zwei Textzeilen eine leere Zeile zu stehen, zum Beispiel:
AAVX Etracs Daily Short 1 Month S&P
ABCS Guggenheim Abc High Dividend Et
ABI Safety First Trust
Wenn ich jedoch dieselbe Datei mit dem Standard-Windows-Editor öffne, wird sie ohne die Leerzeichen wie folgt angezeigt:
AAVX Etracs Daily Short 1 Month S&P
ABCS Guggenheim Abc High Dividend Et
ABI Safety First Trust
Die Frage ist: Welchem Notizblock kann ich vertrauen und warum passiert das?
Antwort1
Dies geschieht, wenn dieEnde der BetriebszeitSteuerzeichen sind nicht korrekt. Windows stellt Zeilenumbrüche mit carriage return
+ dar line feed
.
In Notepad++ können Sie nach diesen Zeichen suchen, indem Sie Folgendes auswählen:
Sicht>Symbole anzeigen>[x] Show End of Line
Sie müssen Ihr Skript ändern, damit Ihre Daten wie folgt formatiert sind:
Antwort2
Ist die Einstellung
Edit > EOL Conversion
Hat das irgendeine Wirkung? Versuchen Sie, es auf UNIX umzustellen.
Antwort3
Sie haben zusätzlich zum regulären Windows-EOL ein Nicht-Windows-EOL-Zeichen CrLf
. Notepad++ versteht alle verschiedenen EOL-Zeichen und zeigt sie alle an. Windows Notepad ist nicht so intelligent und überspringt die Nicht-Windows-EOL-Zeichen.
Ich kenne mich mit Perl nicht aus, aber wenn mir das passiert, liegt es fast immer daran, dass der String, den ich sende, am Ende das nicht von Windows unterstützte EOL-Zeichen hat. Testen Sie den Asc-Zeichencodewert des letzten Zeichens in Ihrem String und entfernen Sie ihn, wenn es ein ist carriage return
.
Beispiel in VBA
If Asc(Right(sName, 1)) = 13 Then
sName = Left(sName, Len(sName) - 1)
End If