Vorheriges Thema anzeigen :: Nächstes Thema anzeigen |
Autor |
Nachricht |
JPT
Anmeldungsdatum: 27.02.2006 Beiträge: 35
|
Verfasst am: 27.02.2006, 20:31 Titel: Wie kann ich Tabulatoren aus einem String entfernen ? |
|
|
Hallo,
Ich habe eine Frage zum Auslesen von Dateien, um einen bestimmten Converter zu realisieren.
In einer Zeile dieser Datei habe ich erst Text, dann durch ein Leerzeichen abgetrennte Zahlen.
Ich nehm mal das Beispiel:
Das auslesen davon ist noch kein Problem.
Problematisch wird es erst, wenn davor ein oder mehrere Tabulatoren platziert sind:
Frage: Wie kann ich eine eingelesene Zeile von Tabulatoren befreien, um sie verarbeiten zu können.
Ich hab es schon mit der simplen Methode
Code: |
zeile$ = LTRIM$(zeile$)
|
probiert, jedoch funktioniert die nicht.
Ebenso verhält es sich mit:
Code: |
zeile$ = MID$( zeile$ , 1 , LEN ( zeile$))
|
Habt ihr eine Idee ? _________________ MfG JPT |
|
Nach oben |
|
 |
Michael Frey

Anmeldungsdatum: 18.12.2004 Beiträge: 2577 Wohnort: Schweiz
|
Verfasst am: 27.02.2006, 20:48 Titel: |
|
|
Code: | zeile$ = MID$( zeile$ , 2 , LEN ( zeile$)) |
Das erste Zeichen soll ja weg, darum erst ab dem zweiten Starten mit dem Ausschneiden.
(Wenn du beim ersten startest und bis zum letzten Zeichen gehst, ist es etwas Witzlos, weil dann alle Zeichenen ja bleiben) _________________ http://de.wikibooks.org/wiki/FreeBasic Jede Hilfe für dieses Buch ist Willkommen!
http://de.wikibooks.org/wiki/FreeBasic:_FAQ FAQ zu Freebasic (im Aufbau, hilfe Willkommen)
Neu mit Syntax Highlight |
|
Nach oben |
|
 |
JPT
Anmeldungsdatum: 27.02.2006 Beiträge: 35
|
Verfasst am: 27.02.2006, 20:59 Titel: |
|
|
hmm... Ich hab mich wohl falsch ausgedrückt...
Ich zeig euch mal einen Ausschnitt der Datei, die ich einlesen möchte:
Code: |
box
position 50 50 50
rotation 0
size 12 21 30
end
|
Das Problem ist die eigentliche Erkennung dieser Tabulatoren.
Haben die irgend einen bestimmten ASCI-Code, den man filtern könnte ?
Ich könnte mir etwas mit der CHR$ Funktion vorstellen... _________________ MfG JPT |
|
Nach oben |
|
 |
treckertom
Anmeldungsdatum: 27.02.2006 Beiträge: 1
|
Verfasst am: 27.02.2006, 22:36 Titel: |
|
|
Tabulatur ist ASCII 9.
Gurgel hätte das auch gewusst. |
|
Nach oben |
|
 |
JPT
Anmeldungsdatum: 27.02.2006 Beiträge: 35
|
Verfasst am: 27.02.2006, 23:25 Titel: |
|
|
hmm... ich hab's fertig bekommen...
Aber wenn der Tabulator 9 ist, was ist dann 4 ?
Die Leertaste ?
Denn ich hab (rein intuitiv) die 4 gesetzt, und das half.
Die 9 hab ich noch nicht getestet. _________________ MfG JPT |
|
Nach oben |
|
 |
pinkpanther

Anmeldungsdatum: 28.05.2005 Beiträge: 79 Wohnort: Wien
|
Verfasst am: 27.02.2006, 23:31 Titel: |
|
|
Der ASCII-Code für ein Leerzeichen ist 32. Der ASCII-Code 4 ist einfach ein Steuercode ohne entsprechendes Zeichen bzw. entsprechende (Funktions-)Taste auf der Tastatur. _________________ lG
pinkpanther  |
|
Nach oben |
|
 |
JPT
Anmeldungsdatum: 27.02.2006 Beiträge: 35
|
Verfasst am: 27.02.2006, 23:34 Titel: |
|
|
lol
Dann filtere ich jetzt Tabulatoren (9) und irgendetwas anderes (4)
Leerzeichen werde ich noch hinzufügen. _________________ MfG JPT |
|
Nach oben |
|
 |
pinkpanther

Anmeldungsdatum: 28.05.2005 Beiträge: 79 Wohnort: Wien
|
Verfasst am: 27.02.2006, 23:38 Titel: |
|
|
Und wenn ich so fies bin und deine Datei mit "geschützten Leerzeichen" (ASCII-Code 255) infiltriere?  _________________ lG
pinkpanther  |
|
Nach oben |
|
 |
Kai Bareis

Anmeldungsdatum: 10.09.2004 Beiträge: 545 Wohnort: Baden Würtemberg
|
Verfasst am: 28.02.2006, 00:01 Titel: |
|
|
ASCII 4 ist EOT = End Of Transmission
einfach mal in Qbasic auf die Hilfethemen klicken und dann Ascii Codes anklicken _________________ MfG Kai Bareis
Es ist noch kein Meister vom Himmel gefallen! Warum einfach wens auch umständlich geht! |
|
Nach oben |
|
 |
JPT
Anmeldungsdatum: 27.02.2006 Beiträge: 35
|
Verfasst am: 28.02.2006, 00:10 Titel: |
|
|
Das wirst du nicht wagen
geschützte Leerzeichen...*lol*
naja... jetzt hab ich nur das Problem, das ich nicht denken kann... schon spät... _________________ MfG JPT |
|
Nach oben |
|
 |
Thomas Antoni

Anmeldungsdatum: 12.10.2004 Beiträge: 220 Wohnort: Erlangen
|
Verfasst am: 03.03.2006, 19:03 Titel: |
|
|
Ich habe zu dem Problem den folgenden QB-MonsterFAQ - Eintrag entworfen:
***
Frage deutsch
~~~~~~~~~~~~~~~~
Wie ersetze ich Tabulatoren durch Leerzeichen oder lösche sie?
In Textdateien stören oft die dort enthaltenen Tabulatoren, weil sie nicht in
allen Textverarbeitungen, Editoren und Entwicklungsumgebungen gleich angezeigt
werden. Daher kann es wünschenswert sein, in einem Text alle Tabulatoren zu
löschen oder durch eine wählbare Anzahl von Leerzeichen zu ersetzen. Wie kann
ich das mit einem QBasic-Programm bewerkstelligen?
Question English
~~~~~~~~~~~~~~~~
How to replace TABs by blanks or remove them?
Antwort 1
~~~~~~~~~~~~~~~~
[ von Thomas Antoni, 3.3.2006 ]
Zum Suchen und Ersetzen von Text verwendest Du den INSTR()-Befehl. Mein unten
stehendes Programm TAB2SPC.BAS zeigt, wie Du die in einer Textzeile enthaltenen
Tabulatoren durch Leerzeichen ersetzen oder löschen kannst.
Willst Du eine ganze Textdatei entsprechend bearbeiten, dann kannst Du Dich an
meinem Programm REPLACE.BAS orientieren, das im FAQ-Eintrag "Wie suche und
ersetze ich Textstücke in einer Datei?" aufgeführt ist.
Code: |
'****************************************************************************
' TAB2SPC.BAS = Tabulatoren durch Leerzeichen ersetzen oder loeschen
' ===========
' Dieses Q(uick)Basic-Programm entfernt alle Tabulatorzeichen (ASCII-Code=9)
' aus einer beliebigen Textzeile und ersetzt sie durch eine waehlbare Anzahl
' von Leerzeichen.
' Gibt der Anwender "0" als Anzahl der Leerzeichen ein, so werden alle
' Tabulatoren ersatzlos geloescht.
'
' (c) Thomas Antoni, 3.3.2006
'****************************************************************************
'
'----- Textvorgabe
CLS
PRINT "Dies ist ein Text mit 2 Tabulatoren:"
line$ = "Die" + CHR$(9) + "Sonne" + CHR$(9) + "scheint"
COLOR 14 'gelbe Textfarbe
PRINT line$; "" 'Text mit TABs anzeigen
COLOR 7 'wieder hellgraue Textfarbe
PRINT
PRINT "Durch wieviele Leerzeichen soll jeder TAB ersetzt werden?"
PRINT "(0 fuer ersatzloses Loeschen der TABs)"
INPUT "", leerz%
leerz$ = SPACE$(leerz%) 'String mit der gewuenschten Anzahl von Leerzeichen
'
'----- Tabulatoren ersetzen
lineptr% = 1 'Zeilenzeiger initialisieren
'
DO 'Schleife ueber alle zeichen
foundptr% = INSTR(lineptr%, line$, CHR$(9)) 'TAB suchen
IF foundptr% > 0 THEN 'TAB gefunden?
line$ = LEFT$(line$, foundptr% - 1) + leerz$ + MID$(line$, foundptr% + 1)
'TAB ersetzen
lineptr% = foundptr% + leerz% 'Zeilenzeiger hinter Ersetzungsstelle setzen
IF lineptr% > LEN(line$) THEN EXIT DO 'Zeile fertig bearbeitet
ELSE EXIT DO 'keine TABs gefunden
END IF
LOOP
'
'----- Geaenderten Text anzeigen
PRINT
PRINT "Hier sind die TABs durch"; leerz%; "Leerzeichen ersetzt:"
COLOR 14
PRINT line$
COLOR 7
|
_________________ +++ Die beliebte QBasic CD-ROM von QBasic.de - 670 MB QBasic-Stuff mit komfortabler HTML-Oberfläche. Für nur 5 EUR bestellbar auf www.antonis.de/qbcdueb.htm +++ |
|
Nach oben |
|
 |
|