使用R将字符插入字符串

时间:2016-09-14 01:35:33

标签: r

我想在字符串中插入一次,两次或三次冒号字符。例如,我想要

G*2413 => G*24:13
G*15122 => G*15:122
G*010101 => G*01:01:01
G*02010102 => G*02:01:01:02

如何使用R?

执行此操作
have <- c('G*2413', 'G*15122', 'G*010101', 'G*02010102')
want <- c('G*24:13', 'G*15:122', 'G*01:01:01', 'G*02:01:01:02')

2 个答案:

答案 0 :(得分:2)

您可以使用(\\d{2}(?!\\d?$))尝试gsub,将每两位数字替换为自身后跟一个冒号字符,除了它后跟字符串的结尾或后跟字符串末尾的一位数字。 ?!是负向预测语法,可确保匹配的模式不会跟随另一种模式:

gsub("(\\d{2}(?!\\d?$))", "\\1:", "G*02010102", perl=T)
# [1] "G*02:01:01:02"

gsub("(\\d{2}(?!\\d?$))", "\\1:", "G*010101", perl=T)
# [1] "G*01:01:01"

gsub("(\\d{2}(?!\\d?$))", "\\1:", "G*15122", perl=T)
# [1] "G*15:122"

gsub("(\\d{2}(?!\\d?$))", "\\1:", "G*2413", perl=T)
# [1] "G*24:13"

答案 1 :(得分:1)

我们也可以使用积极的外观

gsub("(\\d{2})(?=\\d{2})", "\\1:", have, perl = TRUE)
#[1] "G*24:13"       "G*15:122"      "G*01:01:01"    "G*02:01:01:02"