c# - 猪拉丁语翻译中的问题
问题描述
我是 Stack Overflow 和一般编码的新手。我正在学习面向对象的编程课程,并且正在尝试学习 C#。这是我课程的第二周,我的教授希望我创建一个猪拉丁语翻译器。不幸的是,他有一些我正在努力解决的时髦要求。我认为我有基本的 Pig Latin 部分,但我正在努力解决这些问题:
- 如果单词以字母 Y 开头,则应将 Y 视为辅音。如果 Y 出现在单词的任何其他位置,则应将其视为元音。
- 保留原始单词的大小写,无论是大写 (TEST)、标题大小写 (Test) 还是小写 (test)。
- 将所有标点符号保留在翻译单词的末尾。
- 用缩略词翻译单词。例如,can't 应该是 an'tcay。
- 不要翻译包含数字或符号的单词。例如,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,但我相信这也不是最好的解决方案。
我坚持保持翻译单词的大小写和在翻译单词的末尾保留标点符号。
解决方案
推荐阅读
- winapi - LockFile 和 LockFileEx 在物理驱动器上失败
- c++ - 在遗留的非 qmake 构建中处理 Q_OBJECT?
- javascript - 如何在从 html 集合创建的数组中通过 for 循环从对象中获取元素的值?
- javascript - 如何在反应中存储 twitter API 响应并稍后在组件中使用
- android - 在更新的 Android 版本中导入旧项目
- dataframe - 将列添加到 PySpark 数据框包含基于另外两列分组的列的标准偏差
- reactjs - 单击后退按钮 [Firefox] 后,Redux 商店似乎仍然保留一些数据
- dart - 如何使用 Flutter 并通过 iOS/Swift 和 Android/Kotlin 访问 Native SDKs 组件?
- .net - 新图像中 VB-NET 中的 tesseract OCR 错误
- sql - 具有复杂排序要求的访问查询