我想要数不。的';'在下面的字符串中也拆分用';'分隔的值单独
输入字符串: - TELEPHON; EMERGENC; FAX62TC; BS21; BS22; BS23; BS24; BS25; BS26
答案 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>