XSLT: Suche nach letzten vorkommen in einem string
Eine form gegeben-Nummer wie z.B.:
ABC_12345_Q-10
Möchte ich enden mit:
ABC12345
So, ich muss die position des zweiten Unterstrich
Beachten Sie, dass es gibt keine standard-Muster oder die Länge zum einen der "Abschnitte" zwischen den Unterstrichen (so kann ich nicht verwenden substring zu beseitigen Sie einfach den letzten Abschnitt).
xPath 2.0-Lösungen sind okay.
Was passiert mit dem ersten Unterstrich in Ihrer Probe?
Gute Frage (+1). Siehe meine Antwort für XPath 2.0-und XSLT-1.0-Lösungen, um das allgemeinere problem, wenn die Anzahl der Unterstriche ist im Vorfeld nicht bekannt. 🙂
Gute Frage (+1). Siehe meine Antwort für XPath 2.0-und XSLT-1.0-Lösungen, um das allgemeinere problem, wenn die Anzahl der Unterstriche ist im Vorfeld nicht bekannt. 🙂
InformationsquelleAutor johkar | 2010-06-29
Du musst angemeldet sein, um einen Kommentar abzugeben.
Alternativ:
Beide scheinen gut zu funktionieren.
InformationsquelleAutor Pavel Minaev
@Pavel_Minaev hat XPath 1.0 amd XPath 2.0-Lösungen, die funktionieren, wenn es im Voraus bekannt ist, dass die Anzahl der Unterstriche ist 2.
Hier sind Lösungen für die schwierigeren problem, wo die Zahl der undrscores ist nicht statisch bekannt (kann eine beliebige Zahl):
XPath 2.0:
XSLT 1.0:
wenn diese transformation wird angewendet, um zu jedem XML-Dokument (nicht verwendet), die gewünschte, richtige Ergebnis produziert wird:
InformationsquelleAutor Dimitre Novatchev
Einfachere Lösung in XSLT 2.0:
Mit 'substring-before' erhalten Sie alles, was nach die letzten Entstehung Ihres Trennzeichen (der Unterstrich).
Wenn Sie 'substring-after' statt, Sie wird alles bekommen, was vor die letzten Entstehung Ihrer deliminator.
InformationsquelleAutor omoroca
Verallgemeinerten -
Idee ist, um den index des letzten Auftretens von Aufspaltung string.
Index des letzten Vorkommens = string-length($string) - Länge der letzten Zeichenfolge nach split
InformationsquelleAutor Dev