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

C#实现Pig Latin转换时3.3数字处理结果异常问题求助

问题根因

你的代码默认所有单词的首字符都是英文字母,没有对数字、标点等非字母字符做特殊处理,这是导致3.3转换错误的核心原因:

  • 处理3.3时,首字符3不在你定义的元音列表AEIOUYaeioy中,会触发辅音转换逻辑
  • 代码将首字符3移到剩余内容.3的末尾,再拼接ay,最终得到错误结果.33ay

修复方案

根据你给出的预期输出,非字母开头的单词不需要做猪拉丁语转换,直接保留原内容即可。你可以在转换前增加首字符是否为英文字母的判断,修改后的代码如下:

Console.WriteLine("Give a sentence: ");
string sentence = Console.ReadLine();

string pigLatin = ToPigLatin(sentence);

Console.WriteLine(pigLatin);

static string ToPigLatin(string sentence)
{
    const string vowels = "AEIOUYaeioy";
    List<string> pigWords = new List<string>();

    foreach (string word in sentence.Split(' '))
    {
        // 新增判断:如果单词为空或者首字符不是英文字母,直接保留原单词
        if (string.IsNullOrEmpty(word) || !char.IsLetter(word[0]))
        {
            pigWords.Add(word);
            continue;
        }
        string firstLetter = word.Substring(0, 1);
        string restOfWord = word.Substring(1, word.Length - 1);
        int currentLetter = vowels.IndexOf(firstLetter);

        if (currentLetter == -1)
        {
            pigWords.Add(restOfWord + firstLetter + "ay");
        }
        else
        {
            pigWords.Add(word + "way");
        }
    }
    return string.Join(" ", pigWords);
}

运行修改后的代码,输入3.3 is a double就能得到你预期的3.3 isway away oubleday结果。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 06:24:03