Ruby实现删除单词末尾元音功能的更简洁编写方式咨询
简化实现方案
你可以直接利用Ruby内置的字符串方法和正则匹配,把实现压缩到1行核心逻辑,代码更简洁易读:
def hipsterfy(word) word.reverse.sub(/[aeiou]/, '').reverse end
实现逻辑说明
- 先把输入单词反转,原单词的最后一个元音会变成反转后字符串的第一个元音
- 调用
sub方法只会替换匹配到的第一个元音为空,刚好对应删除原单词的最后一个元音 - 最后把字符串反转回原顺序,就得到目标结果
- 如果单词中没有元音,
sub不会做任何替换,两次反转后返回的还是原单词,完全符合需求
如果需要支持大写元音匹配,只要给正则后面加i修饰符即可:/[aeiou]/i
效果验证示例
- 输入
"test"→ 输出"tst" - 输入
"ruby"→ 输出"rby" - 输入
"bcdf"→ 输出"bcdf" - 输入
"aeiou"→ 输出"aeio"
内容的提问来源于stack exchange,提问作者David Venegas
相关产品推荐
相关产品推荐

