假设我的消息字符串长度大约为140(无论如何都超过35个字符)。 我需要使用换行符来分割我的字符串。
例如:消息长度为140
输出所需的输出为:任何人都可以为我提出一些逻辑吗?
答案 0 :(得分:1)
这是一个递归模板,具有可配置的参数,用于行的长度和要追加到末尾的字符。
<xsl:template name="word-wrap">
<xsl:param name="str"/>
<xsl:param name="line-length" select="35"/>
<xsl:param name="line-ending" select="'
'"/>
<xsl:choose>
<xsl:when test="string-length($str)>$line-length">
<xsl:value-of select="substring($str,0,$line-length)"/>
<xsl:value-of select="$line-ending"/>
<xsl:call-template name="word-wrap">
<xsl:with-param name="str" select="substring($str,$line-length)" />
<xsl:with-param name="line-length" select="$line-length" />
<xsl:with-param name="line-ending" select="$line-ending" />
</xsl:call-template>
</xsl:when>
<xsl:otherwise>
<xsl:value-of select="$str"/>
</xsl:otherwise>
</xsl:choose>
</xsl:template>
可以像这样调用:
<xsl:call-template name="word-wrap">
<xsl:with-param name="str" select="'Suppose my message string length was about 140 (more than 35 characters anyway). I need to split my string by using line feed.'"/>
</xsl:call-template>
并生成以下输出:
Suppose my message string length w
as about 140 (more than 35 charact
ers anyway). I need to split my st
ring by using line feed.
注意:,这没有任何逻辑可以解释分割的单词边界或单词的连字符。
答案 1 :(得分:0)
您是否尝试过简单地每35个字符连接一次“\ r \ n”。只要使用一个循环计数器,只要计数器小于字符串的长度,每次增加35,只需使用子串和连接。
答案 2 :(得分:0)
维基百科上有一个描述算法的条目:
答案 3 :(得分:0)
只有固定线条,您可以对其进行硬编码:
<xsl:template match="whatever">
<xsl:value-of select="substring(.,1,35)" />
<xsl:if test="string-length(.) > 35"><xsl:value-of select="concat(' ',substring(.,36,70))" /></xsl:if>
<xsl:if test="string-length(.) > 70"><xsl:value-of select="concat(' ',substring(.,71,105))" /></xsl:if>
<xsl:if test="string-length(.) > 105"><xsl:value-of select="concat(' ',substring(.,106,140))" /></xsl:if>
</xsl:template>
不可否认原油,但有效。