2016-05-26 2 views
0

Я удаление гласные из строки:R: Постепенно ставить гласные обратно в строку

> gsub("\\B[A,E,I,O,U,a,e,i,o,u]+", "", "string.example") 
[1] "strng.exmpl" 

Это уменьшило строка содержит 11 символов. Скажем, у меня есть место для 12 символов, поэтому я хочу, чтобы первый гласный положить обратно в строку:

> MyFunction(string="string.example", maxchar=12) 
[1] "string.exmpl" 

Или с maxchar = 13 Я хочу следующий гласный положить обратно в тоже:

> MyFunction(string="string.example", maxchar=13) 
[1] "string.exampl" 

И так далее. Как я могу постепенно вернуть гласные в отношении того, как долго я хочу, чтобы моя строка была?

ответ

1
MyFunction <- function(string = 'string.example', maxchar = 12){ 

    originalLength <- nchar(string) 

    while(nchar(string) > maxchar){ 
    # remove last vowel 
    newstring <- gsub("(.*)[A,E,I,O,U,a,e,i,o,u](.*)", "\\1\\2", string) 

    # If you run out of vowels to remove, error 
    if(nchar(newstring) == nchar(string)) stop('No more vowels to remove but string still longer than maxchar') 

    string <- newstring 

    #print(string) 
    } 

    return(string) 
} 

Не самый аккуратный, но думаю, что он делает то, что вы хотите. Я добавил проверку, которая обрабатывает случай, когда maxchar короче строки без каких-либо гласных.

Смежные вопросы