我一般都不熟悉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的方法,但我认为最好的解决方案也不一定。
我坚持维护翻译单词的大小写,并在翻译单词的末尾保留标点符号。