You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Perl如何实现删除单词中非首字母位置的所有元音字符?

代码问题修正与正确实现

原有代码的问题

  • 单词分割逻辑错误:使用了中文引号作为分隔符,无法正确按空格拆分文本,应使用空白字符正则/\s+/作为split的参数
  • 循环语法不符合Perl规范:遍历数组的语法错误,也没有单独处理首字母与后续字符的逻辑
  • 字符替换逻辑错误:直接对整个单词执行元音删除操作,会把首字母的元音也一并删除,且tr操作符的参数写法错误
  • 输出变量错误:处理的是单词数组@words,最终打印却调用了未定义的标量$words

正确实现代码

# 定义待处理文本
my $text = "I like apples more than oranges\n";

# 按空白字符分割为单词数组
my @words = split /\s+/, $text;

foreach my $word (@words) {
    # 单字符单词无需处理直接跳过
    next if length($word) <= 1;
    # 拆分首字母与剩余字符
    my $first = substr($word, 0, 1);
    my $remain = substr($word, 1);
    # 删除剩余字符中的所有元音
    $remain =~ tr/AEIOUaeiou//d;
    # 拼接后替换原单词
    $word = $first . $remain;
}

# 拼接处理后的单词为完整文本并输出
my $output = join ' ', @words;
print $output."\n";

运行结果

执行代码后输出内容为:I lk appls mr thn orngs,符合需求。


内容的提问来源于stack exchange,提问作者Traveller

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.04 01:24:05