我有一个任意字符串,比如“1a2 2a1 3a2 10a5”
我可以相对轻松地提取我想要的数字
string = "1a2 2a1 3a2 10a5"
numbers = stringr::str_extract_all(string,'[0-9]+(?=a)')[[1]]
Run Code Online (Sandbox Code Playgroud)
显然,将它们加倍是微不足道的
numbers = 2*(as.integer(numbers))
Run Code Online (Sandbox Code Playgroud)
但是我在将新结果放在旧位置时遇到了问题。得到输出“2a2 4a1 6a2 20a5”。我觉得应该有一个单一的功能来完成这个,但我能想到的就是使用gregexpr并手动将新结果记录在坐标中的匹配的原始索引。
我们可以使用str_replace_allfromstringr来捕获数字"a",然后在它们的回调函数中将它们乘以 2。
stringr::str_replace_all(string, "\\d+(?=a)", function(m) as.integer(m) * 2)
#[1] "2a2 4a1 6a2 20a5"
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
68 次 |
| 最近记录: |