簡體   English   中英

如何用兩個不同的字符替換字符串中的空格?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM