Das Notes Forum

Domino 9 und frühere Versionen => ND8: Entwicklung => Thema gestartet von: Hedwig14 am 03.02.12 - 12:14:52

Titel: Leerzeichen innerhalb eines String entfernen
Beitrag von: Hedwig14 am 03.02.12 - 12:14:52
Hallo
in einer Ansicht möchte ich das Textfeld mit dem Inhalt "448 12 48" als "4481248" darstellen.
Mit @Trim komme ich nicht zum gewünschten Ergebnis, da nur links und rechts die Leerzeilen gelöscht werden.
Fulltrim gibt es in Formelsprache leider nicht !
Hat jemand eine andere Idee ?

Viele Grüßs
Titel: Re: Leerzeichen innerhalb eines String entfernen
Beitrag von: ascabg am 03.02.12 - 12:28:41
Hallo,

So auf ganz die Schnelle wuerden mir @Implode und @Explode einfallen


Andreas
Titel: Re: Leerzeichen innerhalb eines String entfernen
Beitrag von: koehlerbv am 03.02.12 - 12:32:48
@ReplaceSubstring
Titel: Re: Leerzeichen innerhalb eines String entfernen
Beitrag von: ascabg am 03.02.12 - 12:49:31
An das naheliegendste denkt man immer zuletzt.   :'(


Andreas
Titel: Re: Leerzeichen innerhalb eines String entfernen
Beitrag von: Hedwig14 am 03.02.12 - 12:51:37
ja logisch !
Vielen Dank, war immer auf Trim aus !
Titel: Re: Leerzeichen innerhalb eines String entfernen
Beitrag von: koehlerbv am 03.02.12 - 12:56:13
Hinweis: Fulltrim in LotusScript hätte da auch nichts genützt, da der Unterschied zu Trim nur darin besteht, dass Fulltrim mit Arrays umgehen kann, Trim aber nur skalare Werte verdauen kann.

Bernhard
Titel: Re: Leerzeichen innerhalb eines String entfernen
Beitrag von: pram am 03.02.12 - 21:52:53
und ein weiterer Unterschied: Fulltrim entfernt auch doppelte Leerzeichen innerhalb des Strings. Trim nur am Anfang und Ende

ich würde auch @ReplaceSubstring verwenden um Leerzeichen zu entfernen

Wenn du aber alles entfernen willst, was nicht nach Ziffer aussieht, würde ich vielleicht sowas versuchen:

inp := "Hallo12$34%56";
rmv := @replaceSubstring(tmp;"0":"1":"2":"3":"4":"5":"6":"7":"8":"9";"");
@implode(@explode(inp;rmv);"")


Roland
Titel: Re: Leerzeichen innerhalb eines String entfernen
Beitrag von: koehlerbv am 04.02.12 - 00:44:22
und ein weiterer Unterschied: Fulltrim entfernt auch doppelte Leerzeichen innerhalb des Strings.

Äh, nicht nur laut Dokumentation macht das @Trim genauso. Vulgo: Deine Aussage ist falsch.

Dein Fromelkonstrukt ist eines dieser irgendwie genialen @Formula-Konstrukte, die schon 1992 funktionierten und in der Kürze bis heute kein Äquivalent in einer anderen Sprache (vor allem mit dieser Performance) gefunden haben.
Und wer so ein Konstrukt durchdenkt und versteht, warum das Ergebnis funktioniert, hat Notes-programmiermässig sehr viel gewonnen  ;)

Bernhard
Titel: Re: Leerzeichen innerhalb eines String entfernen
Beitrag von: TimDom am 04.02.12 - 10:01:39
Hm, hab jetzt mehrfach über das Konstrukt nachgedacht.
Komme aber nicht dahinter.

Fällt die Variable tmp, welche in der 2. Zeile genutzt wird irgendwie vom Himmel?
Müsse das nicht so aussehen?


inp := "Hallo12$34%56";
tmp := inp;
rmv := @replaceSubstring(tmp;"0":"1":"2":"3":"4":"5":"6":"7":"8":"9";"");
@implode(@explode(inp;rmv);"")
Titel: Re: Leerzeichen innerhalb eines String entfernen
Beitrag von: pram am 04.02.12 - 13:44:52
Sorry es war schon spät und in meine Formel hat sich ein Fehler eingeschlichen:
Das Konstrunkt funktioniert wie Folgt:

Eingabe:
  inp := "Hallo12$34%56";

Alle Ziffern durch "" ersetzen, heraus kommt ein String mit allen unerwünschten Zeichen
  rmv := @replaceSubstring(inp;"0":"1":"2":"3":"4":"5":"6":"7":"8":"9";"");

Die Eingabe an diesen Zeichen splitten (@explode verhält sich hier anders als Lotusscript-split, es wird nämlich jedes Zeichen als Trennzeichen akzeptiert, steht so auch in der Hilfe) und wieder zusammenführen
  @implode(@explode(inp;rmv);"")

Heraus kommt ein String, in dem die unerwünschten Zeichen fehlen (also nur noch Ziffern enthalten sind)




@Bernhard:
du beziehst dich doch hier auf Lotusscript oder?
Zitat
...da der Unterschied zu Trim nur darin besteht, dass Fulltrim mit Arrays umgehen kann, Trim aber nur skalare Werte verdauen kann.
in meiner Hilfe steht:

Fulltrim (LS)
The FullTrim trims strings by eliminating any duplicate whitespaces (SPACE, TAB, NEWLINE) from the center of the string and all whitespace at the beginning and end of the strings

Trim (LS)
Removes white space from both ends of a string.

@Trim (Formelsprache)
Removes leading, trailing, and redundant spaces from a text string, or from each element of a text list.

Ich stimme dir zu, dass "@trim" das genauso wie "Fulltrim" macht.
Der Unterschied zwischen "Trim" und "Fulltrim" besteht aber nicht nur darin, das letzteres mit Arrays umgehen kann.


Titel: Re: Leerzeichen innerhalb eines String entfernen
Beitrag von: koehlerbv am 04.02.12 - 13:51:01
Du hast natürlich bzgl. LS-Trim recht, Roland.

Bernhard
Titel: Re: Leerzeichen innerhalb eines String entfernen
Beitrag von: Tode am 06.02.12 - 10:51:46
Witzigerweise funktioniert das hier genauso:

rmv := @Explode( inp ; "0123456789" );
@ReplaceSubstring( inp ; rmv ; "" );

Formelsprache ist echt genial...
Titel: Re: Leerzeichen innerhalb eines String entfernen
Beitrag von: Dr.Domino am 06.02.12 - 11:02:50
> ... in der Kürze bis heute kein Äquivalent in einer anderen Sprache (vor allem mit dieser Performance) gefunden haben.

Naja, kann man drüber diskutieren :-).

$string =~ s/\s//g;

macht in PERL ebendieses.
Titel: Re: Leerzeichen innerhalb eines String entfernen
Beitrag von: koehlerbv am 06.02.12 - 11:08:18
PERL ist aber für Notes / Domino eher nicht so geeignet  ;D

Bernhard
Titel: Re: Leerzeichen innerhalb eines String entfernen
Beitrag von: m3 am 06.02.12 - 11:11:38
Unter Windows kommt man mit Perl ueber COM auch wunderbar an Notes Dokumente ran. Nicht, dass ich das schon mal gemacht haette ...  ::)