猪拉丁语翻译器中的问题

时间:2018-07-11 05:51:08

标签: c#

我一般都不熟悉Stack Overflow和编码。我正在上一个面向对象的编程课程,并试图学习C#。这是我课程的第二周,我的教授要我创建一个猪拉丁翻译器。不幸的是,他有一些我正在努力的时髦要求。我想我拥有基本的Pig Latin部分,但是我正在努力解决以下问题:

  • 如果单词以字母Y开头,则应将Y视为辅音。如果出现Y 在单词的其他任何地方,都应将其视为元音。
  • 保留原始单词的大小写,无论是大写(TEST),标题大小写(Test)还是小写 (测试)。
  • 将所有标点符号保留在翻译单词的末尾。
  • 翻译带有收缩词。例如,不能是一个原因。
  • 请勿翻译包含数字或符号的单词。例如,应该将123保留为123, 和Jim!@#应该保留为Jim!@#。

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

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的方法,但我认为最好的解决方案也不一定。

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

0 个答案:

没有答案