首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >用字符串中的单个数字替换数字范围

用字符串中的单个数字替换数字范围
EN

Stack Overflow用户
提问于 2018-03-18 03:12:28
回答 2查看 874关注 0票数 4

有没有办法用字符串中的单个数字替换数字的范围?数字可以从n-n,很可能在1-15,4-10也有可能。

范围可以用a表示)-

代码语言:javascript
运行
复制
a <- "I would like to buy 1-3 cats"

或加上一个词b),例如: to,bis,jusqu'à

代码语言:javascript
运行
复制
b <- "I would like to buy 1 jusqu'à 3 cats"

结果应该是

代码语言:javascript
运行
复制
"I would like to buy 1,2,3 cats"

我发现了这个:Replace range of numbers with certain number,但在R中不能真正使用它。

EN

回答 2

Stack Overflow用户

发布于 2018-03-18 03:41:02

事实上,这有点棘手,除非有人已经编写了这样的包(我不知道)。

代码语言:javascript
运行
复制
a <- "I would like to buy 1-3 cats"
pos <- unlist(gregexpr("\\d+\\D+", a))
a_split <- unlist(strsplit(a, ""))
replacement <- paste(seq.int(a_split[pos[1]], a_split[pos[2]]), collapse = ",")
gsub("\\d+\\D+\\d+", replacement, a)
# [1] "I would like to buy 1,2,3 cats"

编辑:要显示相同的解决方案适用于两个数字之间的任意非数字字符:

代码语言:javascript
运行
复制
b <- "I would like to buy 1 jusqu'à 3 cats"
pos_b <- unlist(gregexpr("\\d+\\D+", b))
b_split <- unlist(strsplit(b, ""))
replacement <- paste(seq.int(b_split[pos_b[1]], b_split[pos_b[2]]), collapse = ",")
gsub("\\d+\\D+\\d+", replacement, b)
# [1] "I would like to buy 1,2,3 cats"

如果愿意,可以为非数字字符的运行添加任意要求。如果你需要帮助,只需分享在数字之间的单词或符号的限制!

票数 2
EN

Stack Overflow用户

发布于 2018-03-18 03:41:11

不是最有效率的但是..。

代码语言:javascript
运行
复制
s <- c("I would like to buy 1-3 cats",
       "I would like to buy 1 jusqu'à 3 cats",
       "foo 22-33",
       "quux 11-3 bar")

gre <- gregexpr("([0-9]+(-| to | bis | jusqu'à )[0-9]+)", s)
gre2 <- gregexpr('[0-9]+', regmatches(s, gre))

regmatches(s, gre) <- lapply(regmatches(regmatches(s, gre), gre2),
                             function(a) paste(do.call(seq, as.list(as.integer(a))), collapse = ","))
s
# [1] "I would like to buy 1,2,3 cats"          "I would like to buy 1,2,3 cats"         
# [3] "foo 22,23,24,25,26,27,28,29,30,31,32,33" "quux 11,10,9,8,7,6,5,4,3 bar"           
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49344140

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档