首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >以任何方式生成clrf

以任何方式生成clrf
EN

Stack Overflow用户
提问于 2011-11-15 12:32:08
回答 2查看 54关注 0票数 0

字符串长度约为120

下面是我的消息字符串: CID_Ultimate_Ben_Details=pabbisettishanmukhpraveenkumarpabbisettishanmukhpraveenkumarpabbisettishanmukhpraveenkumarpabbisettishanmukhpraveenkumar

例:消息长度为140。

所需产出如下:

代码语言:javascript
复制
1 to 35 chars in first line
36 t0 70 chars in second line
71 to 105 chars in third line
106 to 140 in fourth line

在这里,我的xslt逻辑:

代码语言:javascript
复制
<xsl:if test ="./CID_Ultimate_Ben_Details != '' " >
                <xsl:if test ="string-length(./CID_Ultimate_Ben_Details) != '11' and string-length(./CID_Ultimate_Ben_Details) != '8' ">
                    <xsl:if test="string-length(./CID_Ultimate_Ben_Details) &gt; 1">
                        <xsl:value-of select="concat(':58D:',substring(./CID_Ultimate_Ben_Details,1,35))" />
                    </xsl:if>
                    <xsl:if test="string-length(./CID_Ultimate_Ben_Details) &gt; 35">
                        <xsl:value-of select="concat('&#10;',substring(./CID_Ultimate_Ben_Details,36,70))" />
                    </xsl:if>
                    <xsl:if test="string-length(./CID_Ultimate_Ben_Details) &gt; 70">
                        <xsl:value-of select="concat('&#10;',substring(./CID_Ultimate_Ben_Details,71,105))" />
                    </xsl:if>
                    <xsl:if test="string-length(./CID_Ultimate_Ben_Details) &gt; 105">
                        <xsl:value-of select="concat('&#10;',substring(./CID_Ultimate_Ben_Details,106,140))" />
                    </xsl:if>
                </xsl:if>

                <xsl:text>&#13;</xsl:text >
            </xsl:if>

所需产出as::58D:pabbisettishanmukhpraveenkumarpabbi settishanmukhpraveenkumarpabbisetti ukhpraveenkumar

但现在,对于上述逻辑输出,如下所示:

:58D:pabbisettishanmukhpraveenkumarpabbi ukhpraveenkumar

为什么它在一个不考虑的manner.can中生成clrf,有人建议我要实现所需的输出。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-11-15 13:54:41

在这里,是一个正确的通用解决方案(适用于任何文本长度和输出行数)XSLT1.0解决方案(XSLT2.0解决方案实际上是基本的):

代码语言:javascript
复制
<xsl:stylesheet version="1.0"
 xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
 <xsl:output method="text"/>
 <xsl:strip-space elements="*"/>

 <xsl:param name="pmsgLength" select="140"/>
 <xsl:param name="pnumLines" select="4"/>

 <xsl:variable name="vmaxLineLength" select=
  "ceiling($pmsgLength div $pnumLines)"/>

 <xsl:template match="/*/text()" name="split">
  <xsl:param name="pText" select="."/>
  <xsl:param name="pnextLines" select="$pnumLines"/>
  <xsl:param name="pHead" select="':58D:'"/>

    <xsl:if test="$pnextLines">
     <xsl:value-of select=
      "concat('&#xA;',$pHead, substring($pText, 1, $vmaxLineLength))"/>

      <xsl:call-template name="split">
       <xsl:with-param name="pText" select="substring($pText, $vmaxLineLength+1)"/>
       <xsl:with-param name="pnextLines" select="$pnextLines -1"/>
       <xsl:with-param name="pHead" select="''"/>
      </xsl:call-template>
    </xsl:if>
 </xsl:template>
</xsl:stylesheet>

当此转换应用于以下XML文档时,

代码语言:javascript
复制
<t>pabbisettishanmukhpraveenkumarpabbisettishanmukhpraveenkumarpabbisettishanmukhpraveenkumarpabbisettishanmukhpraveenkumar</t>

想要的,正确的输出是

代码语言:javascript
复制
:58D:pabbisettishanmukhpraveenkumarpabbi
settishanmukhpraveenkumarpabbisetti
shanmukhpraveenkumarpabbisettishanm
ukhpraveenkumar
票数 0
EN

Stack Overflow用户

发布于 2011-11-15 14:21:39

substring()的第三个参数是所需的长度,而不是像在Java中那样的结束位置。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8136385

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档