R:逐渐将元音放回字符串中

R: Gradually put vowels back into a string

我要从字符串中删除元音:

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

这个缩减后的字符串包含 11 个字符。假设我有 12 个字符的 space,所以我希望将第一个元音放回字符串中:

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

或者 maxchar=13 我也想把下一个元音放回去:

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

等等。关于我希望我的字符串有多长,如何逐渐放回元音?

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 比没有任何元音的字符串短的情况。