C# 如何在不创建方法的情况下检查单词中的Isleter
我的任务是使用VS Studio将一个单词翻译成拉丁语。其中一项要求是确保单词都是字母,但另一项要求是“转换按钮只需要1块代码,不需要其他方法”。我不知道如何在不创建新方法的情况下让它工作 以下是我目前掌握的情况:C# 如何在不创建方法的情况下检查单词中的Isleter,c#,C#,我的任务是使用VS Studio将一个单词翻译成拉丁语。其中一项要求是确保单词都是字母,但另一项要求是“转换按钮只需要1块代码,不需要其他方法”。我不知道如何在不创建新方法的情况下让它工作 以下是我目前掌握的情况: private void convertButton_Click(object sender, EventArgs e) { const int MAX_LENGTH = 12; //maximum length of characters const string
private void convertButton_Click(object sender, EventArgs e)
{
const int MAX_LENGTH = 12; //maximum length of characters
const string SUFFIX = "ay"; //add to end of word
bool isLetter = false; // check if input is all letters
string input = englishWordTextBox.Text.Trim(); //get trimmed copy of input
foreach (char letter in input)
{
if (char.IsLetter(letter))
isLetter = true;
}
if ((input.Length <= MAX_LENGTH) &&
(input != "") &&
(isLetter = true))
{
string firstLetter = input.Substring(0, 1); // isolate first letter of input
string restOfWord = input.Substring(1, input.Length - 1); //isolate rest of word
pigLatinWordLabel.Text = restOfWord + firstLetter + SUFFIX; //display piglatin word
}
else
{
//error message and clear if invalid
MessageBox.Show("Invalid Input");
englishWordTextBox.Text = "";
pigLatinWordLabel.Text = "";
}
}
private void convertButton\单击(对象发送者,事件参数e)
{
const int MAX_LENGTH=12;//字符的最大长度
const string SUFFIX=“ay”//添加到单词末尾
bool isLetter=false;//检查输入是否都是字母
string input=englishWordTextBox.Text.Trim();//获取输入的修剪副本
foreach(输入中的字符)
{
if(字符(字母))
isLetter=真;
}
如果((input.Length如果您的输入包含最后1个字母,则isLetter布尔变量设置为true。因此,如果您的单词是123a123,则isLetter仍然为true。最好将isLetter指定为true,如果至少有1个数字字符,则将其指定为false。您可以中断循环(foreach)一旦您得到第一个数字字符。问题
检查输入字符串中必须是字母的每个字符的方式不正确
foreach (char letter in input)
{
if (char.IsLetter(letter))
isLetter = true;
}
循环将保持迭代并覆盖先前比较的值
样本输入和预期输出:
输入
比较输出
苹果
真的
应用123
假的
123苹果
假的
123
假的
您应该尝试以下方法:
using System.Linq;
const int MAX_LENGTH = 12;
const string SUFFIX = "ay";
private void convertButton_Click(object sender, EventArgs e) {
string input = englishWordTextBox.Text.Trim();
if (input.Any() && input.Length <= MAX_LENGTH && input.All(char.IsLetter)) {
pigLatinWordLabel.Text = input.Substring(1) + input[0] + SUFFIX;
} else {
// exeption stuff...
}
}
使用System.Linq;
const int MAX_LENGTH=12;
常量字符串后缀=“ay”;
private void convertButton_单击(对象发送者,事件参数e){
字符串输入=englishWordTextBox.Text.Trim();
if(input.Any()&&input.Length Hi@nekomancer,欢迎使用堆栈溢出。请检查您的if
语句,isleter=true
,它应该使用==
双等号(相等运算符)。谢谢。仅供参考,“isleter已分配,但其值从未使用”,这不是错误,而是编译器发出的警告。它不会阻止您运行程序。