[英]How can I replace the spaces in a string with two different characters?
我有一列數據字符串,看起來像1402 2010 10
我想用下划線替換第一個空格,用正斜杠替換第二個空格,這樣它看起來像這樣1402_2010/10
通過sub
的想法,
sub('(^[0-9]+)\\s([0-9]+)\\s([0-9]+)', '\\1_\\2/\\3', '1402 2010 10')
#[1] "1402_2010/10"
您可以嵌套sub
如下:
x <- c("1402 2010 10")
sub(" ", "/", sub(" ", "_", x))
#"1402_2010/10"
?sub
子(模式,替換,x)。
x
是尋找匹配的字符向量。 這里的技巧是使用sub
代替x
(它與它找到的第一個空格_
匹配)並且外部sub
用/
替換它找到的第一個空格,這恰好是 x 的第二個空格。
注意:如果您的字符串有更多空格,這只會替換第一個和第二個空格。
試試這個,嵌套sub()
(第一個空格)和gsub()
(其他空格):
v <- "1402 2010 10"
gsub(" ","/",sub(" ","_",v))
[1] "1402_2010/10"
使用gsubfn
您可以編寫一個 function 來跟蹤匹配count
的索引,例如 1 表示第一次匹配,2 表示第二次匹配等,並相應地更改替換
gsubfn(' ', proto(fun = function(this, x) c('_', '/')[count]), v)
#[1] "1402_2010/10"
或者,與使用 Reduce 的基本 R 相同的想法
seq_sub <- function(x, pattern, replacement){
Reduce(function(x, y) sub(pattern, y, x), replacement, init = x)
}
seq_sub('some words here ', ' ', c(9, 5, 2))
# [1] "some9words5here2"
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.