分割字符串函数导致堆栈溢出
|
我有一个功能,可以将字符串拆分为长度不超过76个字符的行。该函数的输入是二进制数据,并且我猜想由于二进制数据的长度,我经常会遇到“堆栈溢出”错误。有什么方法可以防止这种情况,还是有更好的分割字符串的方法?这需要使用XSL 1.0完成。
<xsl:template name=\"splitBinaryData\">
<xsl:param name=\"txt\"/>
<xsl:param name=\"width\"/>
<xsl:choose>
<xsl:when test=\"string-length($txt) > 76 \">
<xsl:value-of select=\"substring($txt, 1, 76)\"/><xsl:text> </xsl:text>
<xsl:call-template name=\"splitBinaryData\">
<xsl:with-param select=\"substring($txt, 77)\" name=\"txt\"/>
<xsl:with-param select=\"$width\" name=\"width\"/>
</xsl:call-template>
</xsl:when>
<xsl:when test=\"string-length($txt) < 76 or string-length($txt) = 76\">
<xsl:value-of select=\"$txt\"/>
</xsl:when>
</xsl:choose>
</xsl:template>
提前致谢。
没有找到相关结果
已邀请:
2 个回复
臂哦
编辑:另一个选择是应用分治法的算法。这将问题分解为两个大小相等的子问题,然后组合了它们的解决方案。相对于输入大小,所需的堆栈深度大大减少,并且呈对数增长,而不是线性增长。这里的技巧是使第一个子字符串大小为76个字符的倍数,以避免插入其他换行符。
裸雷胜檀哭
注意:MSXSL 4在我的机器上2秒钟内将XHTML格式(1.4 MB)的XSLT 2.0规范拆分了。