# String auffüllen



## rolbeh (26. Oktober 2005)

*Zahl auffüllen [gelöst]*

Hi

Ich hab ein Ausgangselement mit einem Wert im algemeinen eine Zahl. Diese Zahl ist zunächst einstellig so eine Art Auftragnummer. Jetzt muss diese Zahl nach links aufgefüllt werden mit 0 .

von 3  zu  0000000000000003

ist das mit xslt machbar?

Gruß


----------



## Rick Dangerous (28. Oktober 2005)

Ja, das müßte mit der Funktion _format-number _ gehen.



```
<xsl:variable name = "A" >3</xsl:variable>
<xsl:value-of select = "format-number($A,'00000000000')" />
```
_output: 00000000003_

(ungetestet)


----------



## rolbeh (1. November 2005)

Joop, Genau so hab ich es gemacht


----------



## Markus Zurbrüggen (7. März 2012)

Ich weiß, das Thema hier ist schon uralt, aber ich dachte, hier kann man gut anknüpfen.
Gibt es auch eine ähnlich schöne Möglichkeit mit Leerzeichen in strings.
So dass die Länge der Strings immer mit Leerzeichen rechts aufgefüllt werden?


----------



## deepthroat (7. März 2012)

Hi.

Also spontan würde mir das einfallen:

```
substr(concat($string, "                 "), 0, 15)
```
Gruß


----------



## Markus Zurbrüggen (7. März 2012)

mmm, ich bin nicht gerade ein alter Hase in der Programmierung, von daher: Kannst du das kurz erläutern? Sind die Zeichen zwischen "" die Länge des gesamten Strings? Was bedeuten die 0, 15?


----------



## Markus Zurbrüggen (7. März 2012)

Außerdem sehe ich gerade, dass die Ausgabe in der nächsten XML nur ein Leerzeichen angefügt hat...


----------



## deepthroat (7. März 2012)

Markus Zurbrüggen hat gesagt.:


> mmm, ich bin nicht gerade ein alter Hase in der Programmierung, von daher: Kannst du das kurz erläutern?


Erst 15 Leerzeichen an den String dranhängen und die 15 ersten Zeichen des String abschneiden.


Markus Zurbrüggen hat gesagt.:


> Sind die Zeichen zwischen "" die Länge des gesamten Strings?


Ja.


Markus Zurbrüggen hat gesagt.:


> Was bedeuten die 0, 15?


Liest du hier: http://devguru.com/Technologies/xslt/quickref/xslt_functions_xpath.html#substring


Markus Zurbrüggen hat gesagt.:


> Außerdem sehe ich gerade, dass die Ausgabe in der nächsten XML nur ein Leerzeichen angefügt hat...


Du müßtest output-method "text" verwenden oder die Ausgabe für das Element auf preserve-space schalten. (http://saxon.sourceforge.net/saxon6.5.5/xsl-elements.html#xsl:preserve-space)

Gruß


----------



## hela (7. März 2012)

Hallo,

du hast mit *XSLT 1.0* folgende Möglichkeiten:


Mit der XPath-Funktion normalize-space() kannst du alle Zeichen aus dem Weißraum (also $x20, $x9, $xD und $xA) am Anfang und am Ende des Strings entfernen.

Mit der XPath-Funktion substring-before() und substring-after() kannst du ermitteln, welche Zeichen aus dem Weißraum vor bzw. nach dem normalisierten String im Original-String stehen.

Mit diesen drei Komponenten und einem vierten eigenen String (z.B. 15 Leerzeichen) kannst du nun einen neuen String zusammenbauen.


Die EXSLT-Stringerweiterung str: padding(number, string?) oder str:align(number, string, string?) könnte dazu auch verwendet werden.


----------

