【发布时间】:2015-04-14 06:54:16
【问题描述】:
假设我有一堆字符串,格式为:#%d-%d-%d。
例如,
#50-69-1
#49-69-2
...
如何在没有暴力破解的情况下通过循环提取每个字符串的第一个数字?
对于上面的例子我想得到:
50
49
...
【问题讨论】:
-
字符串中有
#还是只是一个注释字符? -
@akrun,我在字符串里有它
假设我有一堆字符串,格式为:#%d-%d-%d。
例如,
#50-69-1
#49-69-2
...
如何在没有暴力破解的情况下通过循环提取每个字符串的第一个数字?
对于上面的例子我想得到:
50
49
...
【问题讨论】:
# 还是只是一个注释字符?
试试
sub('^#(\\d+)-.*', '\\1', str1)
#[1] "50" "49"
str1 <- c('#50-69-1', '#49-69-2')
【讨论】:
你可以使用stri_extract函数。
> library(stringi)
> x <- "#50-69-1"
> stri_extract(x, regex="\\d+")
[1] "50"
> regmatches(x, regexpr("\\d+", x))
[1] "50"
或
> gsub("^\\D*|-.*", "", "#49-69-1")
[1] "49"
> gsub("^#|-.*", "", "#49-69-1")
[1] "49"
【讨论】:
x <- c("50-69-1","49-69-2")
你可以使用
substring(x,1,2)
> [1] "50" "49"
【讨论】: