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 比没有任何元音的字符串短的情况。
我要从字符串中删除元音:
> 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 比没有任何元音的字符串短的情况。