【问题标题】:How to get a return value from inside a for/if如何从 for/if 内部获取返回值
【发布时间】:2018-12-07 15:45:41
【问题描述】:

我一直在互联网上寻找一些“将[此代码返回到此之外的下一个括号]”,但我一直没有运气。 Visual Studio 说如果我在“if”中放一个返回,它是“好的”,但它没有向函数调用返回一个值,但我不能把返回放在函数调用中,因为它说字符串没有存在。

此函数的目的是将元音从用户输入的输入转换为连字符/破折号。我无法使用 .Replace(家庭作业)。抱歉,如果此代码实际上不起作用或其他什么,我依赖于在 Visual Studio 中对其进行测试,因此如果有错误,我将无法运行它,但看起来它应该按照我读过的内容做我想做的事.

public static string ReplaceVowels(string strInput) 
{
    char[] chars = strInput.ToCharArray();

    for (int i = 0; i < chars.Length; i++) 
    {
        if (chars[i] == 'a' || chars[i] == 'e' || chars[i] == 'i' || chars[i] == 'o' || chars[i] == 'u' || chars[i] == 'y') 
        {
            chars[i] = '-';
            string strReformed = new string(chars);
        }
    }
    return strReformed;
}

【问题讨论】:

  • 在 for 循环外定义字符串 strReformed,然后在 if 内将其更改为 strReformed = ...。
  • 您在 for 中声明字符串,它不在范围内

标签: c# return


【解决方案1】:

只需将strReformed 移动到循环之外的底部(因为它只需要完成一次,在所有字符都已更改后):

public static string ReplaceVowels(string strInput) {
    char[] chars = strInput.ToCharArray();

    for (int i = 0; i < chars.Length; i++) {
        if (chars[i] == 'a' || chars[i] == 'e' || chars[i] == 'i' || chars[i] == 'o' || chars[i] == 'u' || chars[i] == 'y') {
            chars[i] = '-';
        }
    }

    string strReformed = new string(chars);

    return strReformed;
}

你可以在here看到它。

如果您希望简化,可以使用 LINQ 轻松编写:

public static string ReplaceVowels(string strInput) {
    char[] vowels = new []{'a', 'e', 'i', 'o', 'u'};

    return string.Concat(
        strInput
            .ToCharArray()
            .Select(chr => vowels.Contains(chr) ? '-' : chr)
    );
}

【讨论】:

  • 啊,当吉特。我想因为返回给出了这个错误,所以我不能将任何东西移到它之外,因为它本身就“超出了范围”。非常感谢!
  • 只是一点警告 - 代码区分大小写 - 所以它不会替换 Amen 中的 A
  • 是的,我希望我们可以使用 LINQ,但我已经被告知使用“课外”的东西。我使用了 .sum 命令,不得不将其更改为 foreach 循环,哈哈。对于可能遇到此问题的其他人来说,这是一个很好的例子! @RandRandom 使用 .ToLower 可以解决这个问题吗? (虽然不太清楚我会把它放在哪里)
  • @SetariM IDK 如何不首先教授 LINQ。没有它,.NET 将是一个更黑暗的地方。
  • @SetariM - 我会将大写字母包含在数组中(或包含在 if 条件中),但这是 FrankerZ 的答案,也许他可以用他的想法更新它
猜你喜欢
  • 2010-12-06
  • 1970-01-01
  • 2016-09-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-07-30
  • 2021-03-27
相关资源
最近更新 更多