当前位置: 首页 > 知识库问答 >
问题:

如果XSLT中的字符超过35个,如何正确拆分字符串

马丰
2023-03-14

我正在使用一些字符串在Sage中导入地址。问题是,如果这个包含超过35个字符,我需要拆分我的地址名,将第一部分放入变量(最多35个字符),另一个放入另一个变量。但不是只是分成两半,或35/14,它需要在最后一个空格之前拆分,以保持地址名的可读性。

例如:34右开始街,分裂之城,巴黎法国

var 1=34右开始街道,城市

var 2=拆分,巴黎-法国(拆分包含第35个字符,因此需要在最后一部分)。

您知道如何使用XSLT/Xpath 1.0/Xpath 2.0做到这一点吗?我已经尝试过在之前和之后使用子字符串,但我可以想出如何在需要拆分时删除右侧。

非常感谢!

共有1个答案

商德泽
2023-03-14

xsl:analyze-string可以帮助:

<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
    xmlns:xs="http://www.w3.org/2001/XMLSchema"
    exclude-result-prefixes="#all"
    version="3.0">
    
  <xsl:param name="pattern" as="xs:string">^(.{1,35}) (.*$)</xsl:param>

  <xsl:template match="data">
      <xsl:copy>
          <xsl:analyze-string select="." regex="{$pattern}">
              <xsl:matching-substring>
                  <first-part>
                      <xsl:value-of select="regex-group(1)"/>
                  </first-part>
                  <second-part>
                      <xsl:value-of select="regex-group(2)"/>
                  </second-part>
              </xsl:matching-substring>
          </xsl:analyze-string>
      </xsl:copy>
  </xsl:template>
  
  <xsl:output indent="yes"/>
  
</xsl:stylesheet>

https://xsltfiddle.liberty-development.net/ei5R4u2

 类似资料:
  • 为什么下面的bash代码不起作用? 预期产出:

  • 问题内容: 我正在尝试在python中将字符串拆分为列表,并以字符更改分隔。我发现这很困难,但是可以肯定的是我想得太多了,并且错过了一个可能简单的解决方案。例: ‘abgg22ffeeekkkk1zzabbb’ 会成为: [‘a’,’b’,’gg’,‘22’,’ff’,’eee’,’kkkk’,‘1’,’zz’,’a’,’bbb’] 问题答案:

  • 问题内容: 在java中如何拆分一个字符串?如何使用split方法? 问题答案: “004-034556”为例用方法即可: 请注意,这需要一个正则表达式,因此请记住在必要时转义特殊字符。 _ 12个具有特殊含义的字符:反斜杠,插入符号,美元符号,句点或点,竖线或竖线符号,问号,星号或星号,加号,左括号,右括号,以及方括号,大括号,这些特殊字符通常称为“元字符”。 所以,如果你想在如期间分点.的意思

  • 我想通过分隔符将字符串分成两个字符串: 这意味着第一个字符串将包含之前的字符,第二个字符串将包括

  • 问题内容: 将字符串拆分为流的 最佳 方法是什么? 我看到了这些变化: 我的优先事项是: 坚固性 可读性 性能 一个完整的可编译示例: 问题答案: / 由于返回数组,因此我始终建议您使用流式处理数组的规范用法。 / 是一个 varargs 方法,它恰好接受一个数组,这是由于varargs方法是通过数组实现的,并且在将varargs引入Java以及改型为接受可变参数的现有方法时,存在兼容性方面的问题

  • 我有一个字符串,,我想把它分成两个字符串: 这意味着第一个字符串将包含之前的字符,第二个字符串将包含之后的字符。我还想检查字符串中是否有。如果没有,我会抛出一个异常。我该如何做到这一点?