Xml 计算给定字符串中的元素数
我想数一数“;”在下面的字符串中,也拆分由“;”分隔的值个别地Xml 计算给定字符串中的元素数,xml,xslt,Xml,Xslt,我想数一数“;”在下面的字符串中,也拆分由“;”分隔的值个别地 输入字符串:-电话;紧急的;传真62TC;BS21;BS22;BS23;BS24;BS25;BS26计算字符串中某个字符出现次数的一种方法是删除所有其他字符,然后使用字符串长度。使用XPath 2.0,您可以简单地使用字符串长度(替换($str,[^;]+',''),但即使使用XPath 1.0,如果您使用translate两次,其中translate($str,';','')为您提供所有非分号的字符,然后translate($st
输入字符串:-电话;紧急的;传真62TC;BS21;BS22;BS23;BS24;BS25;BS26计算字符串中某个字符出现次数的一种方法是删除所有其他字符,然后使用字符串长度。使用XPath 2.0,您可以简单地使用
字符串长度(替换($str,[^;]+','')
,但即使使用XPath 1.0,如果您使用translate
两次,其中translate($str,';','')
为您提供所有非分号的字符,然后translate($str,translate($str,,,''),''),'')
只提供分号字符串,您可以使用字符串长度(translate($str,translate($str,“;”,”)
对字符进行计数。echo“my;test;string;it;is”| sed's/[^;]//g'| wc-c
应该完成计数的技巧
echo”my;test;string;it;is“|tr”;“\n”
应该可以进行拆分(用您选择的拆分字符替换\n
)如果您只对计算字符串中某个字符的出现次数感兴趣,那么使用字符串长度()就足够了
但是,由于您还希望拆分该字符串,因此需要使用tokenize
函数。
它执行任务的第二部分-使用给定的标记拆分字符串,在本例中为;'
“;”(任务的第一部分)的出现次数,您可以从
结果数组(count
函数)中的元素数减去一
对于转换为正确XML示例的输入:
<root>
<entry>TELEPHON;EMERGENC;FAX62TC;BS21;BS22;BS23;BS24;BS25;BS26</entry>
</root>
电话;紧急;传真62TC;BS21;BS22;BS23;BS24;BS25;BS26
运行以下XSLT以演示结果
<xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="text"/>
<xsl:strip-space elements="*"/>
<xsl:template match="/root/entry">
<xsl:text>Entry: </xsl:text>
<xsl:value-of select="."/>
<xsl:text>
</xsl:text>
<!-- Split the string -->
<xsl:variable name="tbl" select="tokenize(., ';')"/>
<!-- # of semicolons -->
<xsl:variable name="cnt" select="count($tbl) - 1"/>
<xsl:text># of ';': </xsl:text>
<xsl:value-of select="$cnt"/>
<xsl:text>
</xsl:text>
<!-- Show each substring -->
<xsl:for-each select="$tbl">
<xsl:value-of select="position()"/>
<xsl:text>. </xsl:text>
<xsl:value-of select="."/>
<xsl:text>
</xsl:text>
</xsl:for-each>
</xsl:template>
</xsl:stylesheet>
条目:
;
#关于“;”:
;
.
;
您使用哪种语言?展示您的努力。它有8个“;”字符。拆分值似乎很简单,但找不到更清晰的方法来计算“;”计数和拆分是两件不同的事情。请显示您希望获得的确切输出,并说明是否使用XSLT 1.0或2.0。当一个或两个ple bash内置就足够了?@D.Kovács,海报将问题标记为xslt,因此XPath作为xslt中使用的表达式语言似乎是一个合适的工具。@MartinHonnen的确,我的错,现在是周五晚上。先生,非常好的正则表达式用于计算特定文本。加上一个。这个问题标记为xslt
。您的an是什么语言swer?@michael.hor257k的确,我的错,现在是星期五晚上。我还是会留下它作为参考。如果社区需要,我会删除它。