Announcement

Collapse
No announcement yet.

führende Nullen entfernen

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • führende Nullen entfernen

    Hy!

    Ich wollte gerne wisen, wie man am Besten in den folgenden Strings die führenden Nullen entfernt.

    0411s6f6161
    0000srf000sdf0516
    145100513
    0351035105
    000000041
    0548,1605

    Am Ende sollte es dann so aussehen

    411s6f6161
    srf000sdf0516
    145100513
    351035105
    41
    548,1605

    Ich hatte zuerst gedacht an
    Code:
    format-number(number(@test,'#.#####')
    Da kommt er doch aber bestimmt nicht mit den Buchstaben dazwischen klar, oder?
    --
    http://www.vic-fontaine.com/

  • #2
    Falls XSLT/XPath 2.0 verfügbar sind, dann löst die neue XPath-Funktion fn:replace() das Problem elegant mit einem einfachen regulären Ausdruck:
    Code:
    <xsl:value-of select="fn:replace('0000srf000sdf0516','^0+','')"/>
    Ansonsten bietet sich ein rekursiv aufgerufenes Template an:
    Code:
    <xsl:template match="/">
      <xsl:call-template name="nullen_entfernen">
        <xsl:with-param name="str" select="'0000srf000sdf0516'"/>
      </xsl:call-template>
    </xsl:template>
    
    
    <xsl:template name="nullen_entfernen">
      <xsl:param name="str"/>
      <xsl:choose>
        <xsl:when test="substring($str,1,1)='0'">
          <xsl:call-template name="nullen_entfernen">
            <xsl:with-param name="str" select="substring($str,2)"/>
          </xsl:call-template>
        </xsl:when>
        <xsl:otherwise>
          <xsl:value-of select="$str"/>
        </xsl:otherwise>
      </xsl:choose>
    </xsl:template>
    Das Ergebnis ist jeweils srf000sdf0516.

    Comment

    Working...
    X