Сделать первую букву после специальных символов заглавной

Я хочу удалить лишние пробелы, добавить пробелы, если необходимо, и сделать первую букву каждого слова заглавной после специального символа, используя R

string <- "apple,banana, cat, doll and donkey;     fish,goat"

Я хочу вывести как

Apple, Banana, Cat, Doll and donkey; Fish, Goat

Я пытался

gsub("(^.|,.|;.)", "\\U\\1", string, perl=T, useBytes = F)

Это не сработало. Пожалуйста помоги


person Rajan    schedule 07.12.2015    source источник
comment
вам нужно разрешить пробелы gsub("(^.|[,;]\\s*.)", "\\U\\1", string, perl=TRUE)   -  person rawr    schedule 07.12.2015


Ответы (1)


Ты можешь использовать

string <- "apple,banana, cat, doll and donkey;     fish,goat"
trimws(gsub("(^|\\p{P})\\s*(.)", "\\1 \\U\\2", string, perl=T))
## => [1] "Apple, Banana, Cat, Doll and donkey; Fish, Goat"

См. эту демонстрацию IDEONE.

Регулярное выражение PCRE соответствует:

  • (^|\\p{P}) - (Группа 1) начало строки или любой знак препинания
  • \\s* - 0 или более пробельных символов
  • (.) - (Группа 2) любой символ, кроме новой строки

Замена:

  • \\1 - группа обратных ссылок 1
  • - вставляет пробел между знаком препинания и следующим символом или в начале строки
  • \\U\\2 - переводит символы группы 2 в верхний регистр

И trimws удаляет начальное пространство, которое мы добавили с помощью регулярного выражения.

person Wiktor Stribiżew    schedule 07.12.2015