我有
a = c("1234567890", "0987654321")
and I want
a = c("123-456-789", "098-765-4321")
我想在字符串的第4个和第8个位置添加破折号,我该怎么做?
使用gsub
(类似于评论中的一个方法):
gsub("(\\d{3})(\\d{3})(\\d{4})$","\\1-\\2-\\3",a)
[1] "123-456-7890" "098-765-4321"
或者使用 stringr
中的 str_replace
:
str_replace(a,"(\\d{3})(\\d{3})(\\d{4})$","\\1-\\2-\\3")
substr
的方法。 - agstudysubstr
不够优雅(也不够高效)。 - Rich Scrivenstringr
选项:str_replace_all(a, "(?<=^\\d{3}|^\\d{6})", "-")
。 - Jota
substr
和paste
也可以工作。 - alistairegsub("(...)(...)(.*)", "\\1-\\2-\\3", a)
。 - Rich Scrivensubstr
函数,可以这样写:paste(substr(a, 1, 3), substr(a, 4, 6), substr(a, 7, nchar(a)), sep = '-')
。 - alistaire