添加多词搜索支持

已完成

Contoso 宠物应用有助于为废弃宠物寻找新家。 团队希望改进搜索功能,让用户在搜索狗时输入多个术语。

搜索规范

在本第一个挑战练习中,你需要更新单个词搜索功能,以允许用户输入以逗号分隔的多个搜索词。

从用户收集多个搜索词

  • 允许用户在搜索狗时输入多个搜索词
  • 用户需要“输入用逗号分隔的搜索词”的指令
  • 将单个搜索词与用户输入字符串分开,并将其存储为数组中的值
  • 字母数字排序顺序对数组中的术语进行排序

识别符合一个或多个用户搜索词描述的狗

  • animalsArray 中识别狗狗时,搜索用户输入的每个词的匹配项
  • 对于术语匹配,输出包含狗名称和匹配的术语的消息
    • 示例:Our dog Jake is a match for your search for sheppard!
  • 对当前狗狗描述完成所有术语搜索后:
    • 对于一个或多个匹配项,输出当前狗的昵称和说明
    • 对于一个或多个匹配项,跟踪已有一个匹配项,这样你就知道不会显示“找不到任何可领养狗狗的匹配项”消息(请参阅下一项)
  • 在完成所有狗狗搜索,并且没有匹配项后,将会显示一条消息,指出“找不到任何可领养狗狗的匹配项”

强制实施以下验证规则

  • 值不能为 null
  • 值不能有零个字符
  • 任何进一步的限制都由开发人员决定

代码注释

  • 起始代码中的编号代码注释提供了一些建议
  • 批注按顺序排列,仅从 #1、#2 和 #3 开始的注释适用于本挑战练习

示例输出

  • 查看以下动画图像

    • 请注意,临时显示的“searching...”后跟当前搜索词(例如“searching...retriever”)

    • 请注意,搜索中的术语现在以字母和数字顺序排列。

    • 请注意匹配的消息仍然存在(示例:“Our dog lola is a chase match!”)

      应用程序搜索狗描述的示例的动画屏幕截图,其中包含四个用户提交的术语。

  • 查看以下部分中的示例输出“如何检查工作”,以进一步阐明如何实现功能

如何检查工作

若要验证代码是否满足指定的要求,请完成以下步骤:

  1. 使用 Visual Studio Code 生成和运行应用。

注释

如果看到的结果不符合规范要求,可以先退出验证测试,然后再完成所有验证步骤。 若要强制退出正在运行的程序,请在终端面板中按 Ctrl-C。 退出正在运行的应用后,完成你认为将解决你正在处理的问题的编辑,将更新保存到 Program.cs 文件,然后重新生成并运行代码。

  1. 终端命令提示符应显示为程序的起点

  2. 在命令提示符下,输入 2 菜单:

    Welcome to the Contoso PetFriends app. Your main menu options are:
     1. List all of our current pet information
     2. Display all dogs with a specified characteristic
    
    Enter your selection number (or type Exit to exit the program)
    2
    
    Enter dog characteristics to search for separated by commas
    
  3. 如果多个搜索词与狗狗描述匹配,请在命令提示符处输入“large, cream, gold”进行测试。 验证终端面板是否使用类似于代码输出示例的消息进行更新:

    Enter dog characteristics to search for separated by commas
    large, cream, golden
    
    Our dog Nickname: lola matches your search for cream
    Our dog Nickname: lola matches your search for golden
    Nickname: lola (ID #: d1)
    Physical description: medium sized cream colored female golden retriever weighing about 45 pounds. housebroken.
    Personality: loves to have her belly rubbed and likes to chase her tail. gives lots of kisses.
    
    Our dog Nickname: gus matches your search for golden
    Our dog Nickname: gus matches your search for large
    Nickname: gus (ID #: d2)
    Physical description: large reddish-brown male golden retriever weighing about 85 pounds. housebroken.
    Personality: loves to have his ears rubbed when he greets you at the door, or at any time! loves to lean-in and give doggy hugs.
    
    Press the Enter key to continue
    
  4. 在命令提示符下,按 Enter 键继续主菜单

  5. 在命令提示符下,输入 2 菜单:

    Welcome to the Contoso PetFriends app. Your main menu options are:
     1. List all of our current pet information
     2. Display all dogs with a specified characteristic
    
    Enter your selection number (or type Exit to exit the program)
    2
    
    Enter dog characteristics to search for separated by commas
    
    
  6. 在命令提示符下,输入 大灰色条带 以测试何时没有搜索词与狗的描述匹配。 验证终端面板是否使用类似于代码输出示例的消息进行更新:

    Enter dog characteristics to search for separated by commas
    big, grey, stripes
    
    None of our dogs are a match for: big, grey, stripes
    
    
    Press the Enter key to continue
    
  7. 如果为有效条目指定了进一步的限制,请运行相应的测试用例来验证你的工作。

注释

如果代码满足要求,则应能够按顺序完成每个步骤,并在单个测试通过中查看预期结果。 如果添加了其他限制,可能需要退出应用程序,然后运行单独的测试通道来完成验证。

如果成功参加此挑战练习,恭喜!