Leerzeichen in String entfernen

für eilige Fragen

Leerzeichen in String entfernen

Postby Jannis2161 » Wed Nov 11, 2009 3:38 pm

Hallo zusammen,

Ich habe folgenden string:

Code: [Select all] [Expand/Collapse] [Download] (Untitled.txt)
  1. 04.11.2009;          04.11.2009;          10007031;          ;          5;          ;          100;          ;          ;          ;          ;          4.00;          ;          ;          Dies ist ein Text;          100;          ;          ;
GeSHi ©


Mein Ziel ist die Leerzeichen zu entfernen. Ich habe es mit dem Befehl CONDENSE string NO-GAPS probiert, aber dann entfernt es mir auch die Leerzeichen im Text (DiesisteinText).

Hat jemand von euch einen Vorschlag / Idee wie ich alle Leerzeichen entfernen kann ausser die im Text?

Gruss
Jam
Jannis2161
..
..
 
Posts: 14
Joined: Fri Jan 12, 2007 11:07 am

Postby Eymen5010 » Wed Nov 11, 2009 3:46 pm

Wie wärs mit einem SPLIT, danach in den gewünschten Feldern die Leerzeichen entfernen um das alles wieder mittels concatenate zusamen zu führen?
Eymen5010
...
...
 
Posts: 192
Joined: Thu Mar 27, 2008 11:08 am

Postby Lennie3901 » Wed Nov 11, 2009 5:12 pm

condense (ohne no-gaps)
replace all occurencies of '; ' with ';' into string
Lennie3901
..
..
 
Posts: 58
Joined: Wed Jun 21, 2006 1:36 pm

Postby Ilja583 » Wed Nov 11, 2009 5:18 pm

In deinem Beispiel hast du keine ";" im Textfeld, welches die Leerzeichen enthält. Außerdem sind die Feldinhalte rechtsbündig gegen den Feldtrenner gesetzt.

Bei einem so einfachen Fall kannst du einfach einen regulären Ausdruck zum Entfernen verwenden.

Code: [Select all] [Expand/Collapse] [Download] (Untitled.txt)
  1. REPORT LINE-SIZE 1000.
  2.  
  3. DATA s TYPE string.
  4.  
  5. s = '04.11.2009;          04.11.2009;          10007031;          ;          5;          ;          100;          ;          ;          ;          ;          4.00;          ;          ;          Dies ist ein Text;          100;          ;          ;'.
  6.  
  7. WRITE:/ s.
  8. REPLACE ALL OCCURRENCES OF REGEX ';\s*' IN s WITH ';'.
  9. WRITE:/ s.
GeSHi ©
Ilja583
.....
.....
 
Posts: 1372
Joined: Wed Jan 08, 2003 3:00 pm

Postby Jannis2161 » Thu Nov 12, 2009 10:31 am

Vielen Dank für die Antworten.

Ich habe jetzt die Lösung von black_adept genutzt. Genau so etwas habe ich gesucht. :D Funktioniert bestens.

Gruss
Jam
Jannis2161
..
..
 
Posts: 14
Joined: Fri Jan 12, 2007 11:07 am

Postby Dejan1830 » Thu Nov 12, 2009 4:39 pm

Hallo,

habe aehnliches Problem. Ich habe einen String mit TAB getrennten Felder, leider ist jedes mal ein Leerzeichen davor was mich stoert. Wie kann ich diese einzelnen Leerzeichen loeschen ohne den TAB zu loeschen.

Text TAB leer Text TAB leer Text Tab leer.
Ich frag mich woher die leerzeichen uberhaupt herkommen.

Fuer die Tabs verwende ich uebrigens
DATA: lv_tabulator TYPE ABAP_CR_LF value cl_abap_char_utilities=>HORIZONTAL_TAB.
....SEPARATED BY lv_tabulator.

Gruesse,
Hanny
Dejan1830
..
..
 
Posts: 35
Joined: Tue Nov 25, 2008 4:38 pm

Postby Ilja583 » Fri Nov 13, 2009 10:16 am

Ist doch dasselbe in grün. Statt Semikolon nimm Tab, statt mehreren space hier nur 1 space.
Einfach mal die Doku zu "REGEX" lesen.

Code: [Select all] [Expand/Collapse] [Download] (Untitled.txt)
  1. REPORT LINE-SIZE 1000.
  2.  
  3. CONSTANTS: tab TYPE c VALUE cl_abap_char_utilities=>horizontal_tab.
  4. DATA:      s   TYPE string.
  5.  
  6.  
  7. * Variante 1:  Falls du sonst keine weiteren Steuerzeichen außer dem TAB in deinem Text hast
  8. CONCATENATE 'Text1' tab ` ` 'Text2' tab ` ` 'Text3' tab ` ` 'Text4' INTO s.
  9. WRITE:/ s.
  10. REPLACE ALL OCCURRENCES OF REGEX '([ [:cntrl:] ])\s' IN s WITH '$1'.
  11. WRITE:/ s.
  12.  
  13.  
  14.  
  15. * Variante 2:  Falls es weitere Steuerzeichen geben könnte und wirklich nur das "TAB+blank" ersetzt werden soll
  16. DATA: find TYPE string.
  17.  
  18. CONCATENATE tab ` ` INTO find.
  19. CONCATENATE 'Text1' tab ` ` 'Text2' tab ` ` 'Text3' tab ` ` 'Text4' INTO s.
  20. WRITE:/ s.
  21. REPLACE ALL OCCURRENCES OF REGEX find IN s WITH tab.
  22. WRITE:/ s.
GeSHi ©
Ilja583
.....
.....
 
Posts: 1372
Joined: Wed Jan 08, 2003 3:00 pm

Postby Ilja583 » Fri Nov 13, 2009 10:21 am

Nachtrag.

Falls du nachher irgendwann die Felder mittels "SPLIT ... INTO TABLE" separierst, brauchst du dich um das Extraleerzeichen doch gar nicht zu kümmern - lass den SPLIT-Befehl das doch einfach automatisch mit entfernen, indem du statt bei "tab" bei "tab+blank" splittest.
Ilja583
.....
.....
 
Posts: 1372
Joined: Wed Jan 08, 2003 3:00 pm


Return to Kurzfragen

Who is online

Users browsing this forum: No registered users and 3 guests