首页 > 解决方案 > 猪拉丁语翻译中的问题

问题描述

我是 Stack Overflow 和一般编码的新手。我正在学习面向对象的编程课程,并且正在尝试学习 C#。这是我课程的第二周,我的教授希望我创建一个猪拉丁语翻译器。不幸的是,他有一些我正在努力解决的时髦要求。我认为我有基本的 Pig Latin 部分,但我正在努力解决这些问题:

到目前为止,这是我的代码:

public partial class Form1 : Form
{
    public Form1()
    {
        InitializeComponent();
    }

    private void btnTranslate_Click(object sender, EventArgs e)
    {
        String english = txtInput.Text;
        string piglatin = "";
        string firstletter;
        string restofword;
        string vowels = "AEIOUaeiou";                       
        int letterpos;

        foreach (string word in english.Split())
        {
            firstletter = word.Substring(0, 1);
            restofword = word.Substring(1, word.Length - 1);
            letterpos = vowels.IndexOf(firstletter);
            if (english.Contains("1"))
            {
                txtTranslation.Text = english;
                break;
            }
            if (english.StartsWith("y"))
            {
                piglatin = piglatin + " " + restofword + firstletter + "ay";
                txtTranslation.Text = piglatin;
                break;
            }
            if (english.StartsWith("Y"))
            {
                piglatin = piglatin + " " + restofword + firstletter + "ay";
                txtTranslation.Text = piglatin;
                break;
            }

            if (letterpos == -1)
            {
                piglatin = piglatin + " " + restofword + firstletter + "ay";
            }
            else
            {
                piglatin = piglatin + " " + "way";
            }

            txtTranslation.Text = piglatin;
            txtInput.Focus();
        }
    }

    private void btnClear_Click(object sender, EventArgs e)
    {
    }

    private void btnExit_Click(object sender, EventArgs e)
    {
    }

    private void txtInput_TextChanged(object sender, EventArgs e)
    {
    }

    private void txtTranslation_TextChanged(object sender, EventArgs e)
    {
    }
}

对于任何包含数字或符号等的东西,我觉得我可以做很多 if 语句,说: if (english.Contains("1"))

txtTranslation.Text = english;
break;

只需为 1 -9 执行此操作,但我相信必须有一种更简单的方法。如果使用符号也是一样的。我也想出了类似的方法来处理字母 Y,但我相信这也不是最好的解决方案。

我坚持保持翻译单词的大小写和在翻译单词的末尾保留标点符号。

标签: c#

解决方案


推荐阅读