C#开发简易搜索功能的菜单式博客程序case2实现受阻求助
C#博客搜索功能逻辑修正
现存的两个关键问题
你现在写的case2搜索功能跑不出正确结果,核心是两个写错的逻辑:
- 遍历的数据源错了:当前循环的判断上限是
bloggInlägg.Length,但bloggInlägg是每轮菜单循环开始时新建的长度为2的临时空数组,根本不存储任何已经添加的博客内容。真正保存了所有博客条目的容器是bloggen这个List,遍历错了数据源,永远不可能搜到已存的内容。 - 循环逻辑没有生效:循环里的判断条件固定写死了拿临时空数组的第0位元素和搜索词比对,完全没用到循环变量,哪怕遍历对象改对了,也不会挨个检查每个条目的标题;而且就算匹配到了,也只输出标题,没有把对应的正文内容打印出来。
可直接替换的正确搜索逻辑
把原来case2块里的错误循环代码替换成下面的内容,就能实现按标题匹配、同时输出标题和正文的需求:
case 2: Console.WriteLine("Ange titel på inlägget du söker: "); string searchWord = Console.ReadLine(); bool hittad = false; // 遍历所有已经存储的博客条目 foreach (var currentPost in bloggen) { // 检查当前条目的标题是否和用户输入的搜索词完全匹配 if (currentPost[0] == searchWord) { hittad = true; // 匹配成功后同时输出标题和正文 Console.WriteLine($"Sökning matchad: \nTitel: {currentPost[0]}\nInnehåll: {currentPost[1]}"); } } // 所有条目遍历完都没匹配到时提示用户 if (!hittad) { Console.WriteLine("Din sökning hittades inte"); } break;
可选优化
如果觉得完全精确匹配太严格,想要实现模糊搜索(比如标题只要包含搜索词、不区分大小写就算匹配),可以把判断条件改成:
if (currentPost[0].IndexOf(searchWord, StringComparison.OrdinalIgnoreCase) >= 0)
内容的提问来源于stack exchange,提问作者AhWallah
相关产品推荐
相关产品推荐

