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

7

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

这个格式是一个字母后跟着一个数字,例如:A3B1C7D1。

但是,如果一个字母后面的数字是1,那么这个字符串就会写成A3BC7D。

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

我的示例数据是:

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

What I want to get is:

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

非常感谢!
3个回答

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


3

寻找所有不紧跟着数字的大写字母([A-Z]),并将其替换为该字符串 + 1

gsub("([A-Z])(?![0-9])", "\\11", strings, perl = TRUE)
# [1] "A1"     "A3B1C3" "A2B1C1"

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

我们首先使用 grep 命令查找所有不以数字结尾的位置,并在这些位置上添加一个 1

9
几乎正确。请检查第二个元素,它应该是“A3B1C3”。 - markus

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接