我有几个固定格式的字符串.
格式是一个字母后跟一个数字,例如A3B1C7D1.
但是,如果字母后面的数字是1,则该字符串将写为A3BC7D.
我想要做的是插入数字1,并将字符串转换A3BC7D为A3B1C7D1.
我的示例数据是
strings <- c("A", "A3BC3", "A2B1C")
Run Code Online (Sandbox Code Playgroud)
我想得到的是:
strings_new <- c("A1", "A3B1C3", "A2B1C1")
Run Code Online (Sandbox Code Playgroud)
非常感谢!
另外一个选项:
gsub("([A-Za-z])(?=[A-Za-z])|([A-Za-z])$", "\\1\\21", strings, perl = T)
Run Code Online (Sandbox Code Playgroud)
输出:
[1] "A1" "A3B1C3" "A2B1C1"
Run Code Online (Sandbox Code Playgroud)
或者,如果你只有大写字母,只需:
gsub("([A-Z])(?=[A-Z])|([A-Z])$", "\\1\\21", strings, perl = T)
Run Code Online (Sandbox Code Playgroud)
基本上,这会找到后跟另一个字母或位于字符串末尾的字母,并将它们替换为自己,同时添加所需的数字,1在这种情况下.