【发布时间】:2017-12-04 09:49:31
【问题描述】:
我在 R 中有以下字符串:“xxx, yyy.zzz” 我只想得到 yyy 部分,它们在“,”和“。”之间
我不想使用正则表达式。
我搜索了半天,在R中发现了很多字符串函数,但没有一个处理“在字符之前/之后剪切”函数。
有吗?
【问题讨论】:
-
stringr是用于此类操作的不错的包。试试stringr::word(x, 2, sep = ',\\s*|\\.')
我在 R 中有以下字符串:“xxx, yyy.zzz” 我只想得到 yyy 部分,它们在“,”和“。”之间
我不想使用正则表达式。
我搜索了半天,在R中发现了很多字符串函数,但没有一个处理“在字符之前/之后剪切”函数。
有吗?
【问题讨论】:
stringr 是用于此类操作的不错的包。试试stringr::word(x, 2, sep = ',\\s*|\\.')
我们可以使用gsub 匹配零个或多个不是, ([^,]*) 的字符,从字符串的开头 (^) 后跟一个 , 后跟零个或多个空格(\\s*) 或 (!) 一个点 (\\. - 它是一个元字符,表示任何字符,因此它被转义) 后跟其他字符 (.*) 直到字符串结尾 ($)并将其替换为空白 ("")
gsub("^[^,]*,\\s*|\\..*$", "", str1)
#[1] "yyy"
如果我们不需要regex,那么strsplit 字符串由, 后跟零个或多个空格或. 并在将list 输出转换为vector 后选择第二个条目([[1]])
strsplit(str1, ",\\s*|\\.")[[1]][2]
#[1] "yyy"
str1 <- "xxx, yyy. zzz"
【讨论】:
[,.] 也是正则表达式
substr。否则,这里需要正则表达式
这可能就足够了:
unlist(strsplit("xxx, yyy. zzz","[,.]"))[2] # get yyy with space, or:
gsub(" ","",unlist(strsplit("xxx, yyy. zzz","[,.]")))[2] # remove space
【讨论】: