计算给定字符串中的元素数量

时间:2017-01-13 11:23:40

标签: xml xslt

我想要数不。的';'在下面的字符串中也拆分用';'分隔的值单独

输入字符串: - TELEPHON; EMERGENC; FAX62TC; BS21; BS22; BS23; BS24; BS25; BS26

3 个答案:

答案 0 :(得分:1)

计算字符串中某个字符出现次数的一种方法是删除所有其他字符,然后使用字符串长度。使用XPath 2.0,您只需使用string-length(replace($str, '[^;]+', '')),但即使使用XPath 1.0,如果您使用translate两次,其中translate($str, ';', '')会为您提供所有不是分号的字符,然后translate($str, translate($str, ';', ''), '')给出只有分号的字符串,您可以使用string-length(translate($str, translate($str, ';', ''), '')来计算字符数。

答案 1 :(得分:0)

echo "my;test;string;it;is" | sed 's/[^;]//g' | wc -c应该做计数的技巧。

echo "my;test;string;it;is" | tr ';' '\n'应该做分割的技巧(用您选择的分割字符替换\n

答案 2 :(得分:0)

如果您对计算字符串中字符的出现次数感兴趣 ,则使用txt <- c("Trump builds a wall", "Trump goes wall", "Obama buys drones", "Drones by Obama") library(quanteda) library(arules) dfm <- dfm(txt) trans <- as(as.matrix(dfm), "transactions") rules <- apriori( data = trans, parameter = list(minlen = 2L, maxlen=2, conf = 1), appearance = list(lhs = c("obama", "trump"), default="rhs") ) inspect(rules) # lhs rhs support confidence lift # 1 {obama} => {drones} 0.5 1 2 # 2 {trump} => {wall} 0.5 1 2 (在上一个答案中提到)就足够了。

但是,您还需要拆分此字符串,您需要使用string-length函数。 它执行任务的第二部分 - 使用给定标记拆分字符串,在本例中为tokenize

';'的出现次数(你的任务的第一部分)你可以得到 结果数组中的元素数(';'函数)减去一。

将您的输入转换为正确的XML示例:

count

运行以下XSLT来演示结果。

<root>
  <entry>TELEPHON;EMERGENC;FAX62TC;BS21;BS22;BS23;BS24;BS25;BS26</entry>
</root>