【发布时间】:2020-09-21 00:14:28
【问题描述】:
好的,所以我想做的事情听起来应该很简单。我有一种方法可以检查字符串中的每个字符是否是从 a 到 m 的字母。我现在必须 continue 一个 foreach 循环,而在一个 for 循环中。有没有办法做我想做的事?
public static string Function(String s)
{
int error = 0;
foreach (char c in s)
{
for (int i = 97; i <= 109; i++)
{
if (c == (char)i)
{
// Here immediately continue the upper foreach loop, not the for loop
continue;
}
}
error++;
}
int length = s.Length;
return error + "/" + length;
}
如果有一个字符不在 a 到 m 的范围内,则应该在 error 中加 1。最后,该函数应返回错误数和字符串中的总字符数,f.E: "3/17"。
编辑
我想要实现的目标是不可能的。在BsdDaemon's answer 中演示了使用临时变量的解决方法。
其他答案通过简单地改进我的代码直接解决了我的问题。
【问题讨论】:
-
@Sweeper 这个 Java 问题不会直接转换为 C#,因为没有标签循环或标签中断语句。
-
@Sweeper 我试过了,但没用。我也试过
break;,但唯一有效的是goto;,但这对我没有帮助。 -
@Klaycon 哦,哎呀!认为这是一个 Java 问题...
-
您的意思是
if (c == (char)i)?为什么不foreach (char c in s) { if (c < 'a' || c > 'm') { error++; } }?甚至(使用 LINQ)int error = s.Count(c => c < 'a' || c > 'm');. -
您可能会考虑我添加到您正在处理的“问题”的可能解决方案中的
Regex示例。
标签: c# for-loop foreach nested-loops continue