Как получить последние 4 символа только из подстроки с переменной длиной символов каждый раз - PullRequest
1 голос
/ 16 мая 2019

Я оптимизирую счет для xml, и я хочу, чтобы последние 4 символа были только переменной. Эта переменная может иметь различную длину символов для каждого полученного мной счета, но в результате я хочу получить только последние 4 символа.

Я уже пробовал это с кодом подстроки, но затем мне нужно указать конкретную длину, в которой код должен получить последние 4 символа.

Код, который я использовал:

<xsl:template match="/">
   <xsl:for-each select="/x:Invoice">
      <xsl:if test="."><xsl:value-of select="substring(translate(cbc:Note,' ',''),27,4)"/></xsl:if>
   </xsl:for-each>
</xsl:template>

это код счета:

<UBLVersionID>2.0</UBLVersionID>
<CustomizationID>1.0</CustomizationID>
<ProfileID>PowerOnline</ProfileID>
<ID>194545</ID>
<IssueDate>2019-05-16</IssueDate>
<InvoiceTypeCode>1</InvoiceTypeCode>
<Note>FB - bestelling voor HH7416</Note>
<TaxPointDate>2019-05-16</TaxPointDate>
<DocumentCurrencyCode>EUR</DocumentCurrencyCode>
<LineCountNumeric>7</LineCountNumeric>
<OrderReference>
<ID>Invoice of an supplier</ID>
<SalesOrderID>19538</SalesOrderID>
<IssueDate>2019-04-30</IssueDate>

Ожидаемый результат - последние 4 символа / x: Invoice / cbc: Примечание, так что 7416. Иногда примечание может быть FB - HH6464, поэтому я всегда хочу иметь последние 4 символа этого cbc: Примечание

1 Ответ

2 голосов
/ 16 мая 2019

Вы можете использовать string-length в сочетании с substring, чтобы получить последние 4 символа

<xsl:value-of select="substring(cbc:Note, string-length(cbc:Note) - 3)" />

(Таким образом, выполнение string-length(cbc:Note) приведет к получению последнего символа, string-length(cbc:Note) - 1 - к последнему2 символа и так далее ...)

...