在每个字母后的字符串中添加数字

时间:2019-02-22 11:08:11

标签: r regex string

我有几个固定格式的字符串。

格式为一个字母,后跟一个数字,例如A3B1C7D1。

但是,如果字母后面的数字为1,则字符串将写为A3BC7D。

我要做的是插入数字1,并将字符串从A3BC7D转换为A3B1C7D1

我的示例数据是

strings <- c("A", "A3BC3", "A2B1C")

我想要得到的是:

strings_new <- c("A1", "A3B1C3", "A2B1C1")

非常感谢!

3 个答案:

答案 0 :(得分:5)

另一个选择:

gsub("([A-Za-z])(?=[A-Za-z])|([A-Za-z])$", "\\1\\21", strings, perl = T)

输出:

[1] "A1"     "A3B1C3" "A2B1C1"

或者,如果您只有大写字母,那就:

gsub("([A-Z])(?=[A-Z])|([A-Z])$", "\\1\\21", strings, perl = T)

基本上,这会找到后面跟着另一个字母或位于字符串末尾的字母,并用它们自己替换,同时添加所需的数字,在这种情况下为1

答案 1 :(得分:3)

查找所有(大写)字母(Refresh Token)后没有数字,然后将其替换为该字符串+ [A-Z]

1

答案 2 :(得分:0)

strings[!grepl("[0-9]$",strings)]=paste0(strings[!grepl("[0-9]$",strings)],"1")
[1] "A1"     "A3BC3"  "A2B1C1"

我们首先grep将所有不以数字结尾的职位粘贴1