c# - 在带有字符串数组 C# 的 foreach 循环中显示单个输出以获得错误结果
问题描述
如果这个问题得到了回答,我很抱歉,我找不到我正在寻找的确切内容,或者简明扼要地把它放在一个句子中进行搜索。我自己几乎解决了这个问题,但无法弄清楚。我是编程新手,所以这对某人来说可能是一个简单的答案。
我有一个字符串数组,一个人可以在其中输入一个字母,并找到包含该字母的所有字符串并显示它们。我使用 foreach 循环实现了这一点。
我面临的问题是,如果没有匹配项,我只希望它输出一个“不匹配”字符串,而不是替换每个不匹配的字符串。
这是有问题的代码块:
string letter = Console.ReadLine();
string no = "No match";
foreach(string x in words)
{
if(x.Contains(letter))
{
Console.WriteLine(x);
}
else {
Console.WriteLine(no);
}
}
解决方案
与其在循环中输出到控制台,不如考虑将执行逻辑的代码与与用户交互的代码分开......即放在Console.WriteLine
后面。
IEnumerable<string> GetMatches(string[] words, string letter)
{
foreach(string x in words)
{
if(x.Contains(letter)) yield return x;
}
}
//Main program
string letter = Console.ReadLine();
var matches = GetMatches(words, letter).ToList();
if (matches.Length == 0)
{
Console.WriteLine("No match.");
}
else
{
foreach (var match in matches)
{
Console.WriteLine(match);
}
}
推荐阅读
- java - 如何使用复杂的 Jsonb Postgresql 列创建 JPA 谓词?
- ios - Swift SubView 定位到 StoryBoard 项目
- django - 如何在 pytest-django 中模拟 django 设置属性
- projection - 使用 read_file() 将 shapefile 导入 geopandas;无法打印 crs 或重新投影
- r - 在 violinplot 中使用循环的 Y 名称
- python-3.x - pysimplegui 状态栏表现得很奇怪
- docker - 谷歌云上基于 Windows 的容器运行
- virtualization - 如何解决 QEMU 和 HAXM 便携式启动问题?
- python - 如何制作一个好的乘法图表
- prolog - 使用 Prolog 与列表和字符串进行模式匹配