Home
Über mich
Veröffentlichungen

XML XML-Schema XPath XSL-T XSL-FO XQuery XProc SVG

XPath / XPath-Funktionen / Stringfunktionen / XPath: replace

XPath: replace

XPath: replace

➪ Die XPath-Funktion replace erlaubt, einen String, der durch ein Pattern identifiziert wird, durch eine andere Zeichenkette zu ersetzen.

Auf dieser Seite:

Bei einfachster Verwendung der replace-Funktion wird eine Zeichenkette durch eine andere ersetzt.

Nehmen Sie eine Variable mit dem Inhalt "Sagblos". Durch Verwendung der replace-Funktion wird aus 'Sagblos' dann 'Sagwas'.


<xsl:variable 
     name="vname" 
     as="xs:string">Sagblos</xsl:variable>
<xsl:value-of 
     select="replace($vname, 'blos', 'was')" />

Das funktioniert auch mit Sonderzeichen, das Ergebnis des folgenden Aufrufs wäre "h;###i###jk":


<xsl:variable 
     name="vstring" 
     as="xs:string">h;&#x9;i&#x9;jk</xsl:variable>
<xsl:value-of select="replace($vstring, '&#x9;', '###')"/>

Interessanter ist die Arbeit mit regulären Ausdrücken. Denn der zweite Parameter der replace-Funktion ist ein Pattern, das den eigentlichen Input jener Zeichen identifiziert, die ersetzt werden sollen. Beim Input-Wert Sagblos wäre das Ergebnis des folgenden Aufrufs #agblos.


<xsl:value-of 
     select="replace($vname, '[A-Z]', '#')"/>

Siehe hierzu auch die translate-Funktion.

Alternative Lösung in XPath 3.0 / XQuery

über =>, for-each und function:


//Ort/name 
=> for-each( function($p){ string($p)} ) 
=> string-join() 
=> replace ('stadt', '#')

Ergebnis:


Neu#Darm#Kap#

Flags

Wie bei matches, tokenize und contains müssen Sie hin und wieder mit speziellen Flags arbeiten, um das Verhalten des verwendeten Programms anzupassen. Hier sollte getestet werden, ob der eingesetzte Prozessor auch diese Flags unterstützt.

Da die replace-Funktion ebenfalls mit regulären Ausdrücken arbeitet, kann es problematisch werden, wenn die zu ersetzenden Zeichen aus Zeichen bestehen, die in regulären Ausdrücken eine besondere Bedeutung haben.


replace('Holz\\flos', '\\', '', 'q')

ergibt "Holzflos". Näheres zum Thema Flags finden Sie unter matches.

wg / 22. März 2020



Fragen? Anmerkungen? Tipps?

Bitte nehmen Sie Kontakt zu mir auf.






Vielen Dank für Ihr Interesse an meiner Arbeit.



V.i.S.d.P.: Wilfried Grupe * Klus 6 * 37643 Negenborn

☎ 0151. 750 360 61 * eMail: info10@wilfried-grupe.de

www.wilfried-grupe.de/replace.html