You need to enable JavaScript to run this app. C#开发简易搜索功能的菜单式博客程序case2实现受阻求助
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.22 23:36:02