Как добавить число в строке в верхнем или нижнем регистре? - PullRequest
0 голосов
/ 22 февраля 2019

Химические формулы (строки) всегда пишутся в определенном формате, за химическим элементом следует одно число, например, кислород O2, углекислый газ CO2.хлорид солидума NaCl

Если один элемент может быть представлен одной буквой, эта буква должна быть в верхнем регистре, например, кислород O и углерод C.Некоторые элементы показаны двумя буквами, и только первая буква находится в верхнем регистре, например, натрий Na.

Таким образом, элемент представлен одной или двумя буквами, есть только два случая.

Вы можете видеть, что если номер элемента равен 1, номер 1 не будет записан после него..

Что я хочу сделать, это добавить 1. после этих элементов.

Мой пример данных

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

Что я хочу получить:

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

На языке программирования существуют строки определенного формата.Заглавная буква или одна заглавная буква и одна строчная буква следует за одной цифрой.Если число за буквой отсутствует, а эта буква в верхнем регистре, а буква за ним также в верхнем регистре, то после этой буквы будет вставлена ​​цифра 1.Если эта буква написана заглавными буквами, а буква за ней - строчными, после строчной буквы будет вставлено 1.

Большое спасибо за помощь.

1 Ответ

0 голосов
/ 22 февраля 2019

Вы можете использовать это регулярное выражение, которое соответствует либо заглавной букве (для C), либо заглавной букве, за которой может следовать одна строчная буква (для поддержки Na или Cl), а не цифра, за которойозначает, что к нему необходимо добавить 1

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

и заменить его на \11

Демо

Посмотрите эту демонстрацию кода R,

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

Отпечатки,

[1] "O2"     "C1O2"   "Na1Cl1"
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...