Напишете главна първата буква след специалните знаци

Искам да премахна излишните интервали, да добавя интервали, ако е необходимо, и да напиша главна първата буква на всяка дума след специалния знак с помощта на 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