如何根据大写或小写在字符串中添加数字?

问题描述 投票:1回答:1

化学式(串)总是以特定的形式写成,化学元素后跟一个数字,例如氧气O 2,二氧化碳CO 2。氯化钠氯化钠

如果一个元素可以用一个字母表示,则该字母为大写字母,例如氧气O和碳C。一些元素用2个字母表示,只有第一个字母是大写字母,例如钠Na

所以元素用一个或两个字母表示,只有两种情况。

您可以看到,如果元素的数量为1,则不会在其后写入数字1。

我想要做的是在这些元素后面添加1。

我的示例数据是

strings <- c("O2", "CO2", "NaCl")

我想得到的是:

strings_new <- c("O2", "C1O2", "Na1Cl1")

在编程语言中,存在具有特定格式的字符串。大写字母或一个大写字母和一个小写字母跟随一个数字。如果缺少一个字母后面的数字,并且这封字母是大写的,并且后面的字母也是大写字母,则1将在此字母后面插入。如果这封信是大写字母,但背后的字母是小写字母,则在小写字母后面插入1。

非常感谢你的帮助。

r regex string
1个回答
3
投票

您可以使用此正则表达式匹配大写字母(对于C)或大写字母可选地后跟一个小写字母(以支持NaCl)而不是后跟数字,这意味着它需要附加1

([A-Z][a-z]?)(?!\d)

并用\11替换它

Demo

看看这个R代码演示,

strings <- c("O2", "CO2", "NaCl")
gsub("([A-Z][a-z]?)(?!\\d)","\\11", strings, perl = TRUE)

打印,

[1] "O2"     "C1O2"   "Na1Cl1"
© www.soinside.com 2019 - 2024. All rights reserved.