C# 如何在不创建方法的情况下检查单词中的Isleter

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

我的任务是使用VS Studio将一个单词翻译成拉丁语。其中一项要求是确保单词都是字母,但另一项要求是“转换按钮只需要1块代码,不需要其他方法”。我不知道如何在不创建新方法的情况下让它工作

以下是我目前掌握的情况:

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已分配,但其值从未使用”,这不是错误,而是编译器发出的警告。它不会阻止您运行程序。