如何统计StringOne中匹配StringTwo的条目总数 忽略大小写支持StringTwo独立扩展
字符串匹配计数解决方案
需求说明
- 已知
StringOne()返回的数组由内置文本"Cat cat bird dog"按空格分割得到,内容为:["Cat", "cat", "bird", "dog"] - 已知
StringTwo()返回的数组从本地文件读取,示例内容为:["Cat", "Bird"] - 要求忽略大小写统计匹配总数,示例场景预期结果为3
- 要求
StringTwo的内容可独立扩展,无需修改主逻辑
原有代码问题梳理
- 使用了C#关键字
var作为变量名,无法正常编译 - 逻辑中
input变量未定义,逻辑链路不完整 - 计数变量
instances未初始化,运行时会抛出异常 - 匹配逻辑未明确为全字匹配,不符合需求预期
修正后可行实现代码
using System; using System.IO; class Program { // 内置文本变量 public static string textVariable = "Cat cat bird dog"; // 替换为你本地StringTwo对应的文件路径 public static string path = "string_two_config.txt"; public static string[] StringTwo() { return File.ReadAllLines(path); } public static string[] StringOne() { return Program.textVariable.Split(' '); } public static int FindNumberOfSimilarStrings() { // 初始化计数变量 int instances = 0; string[] stringOneArr = StringOne(); string[] stringTwoArr = StringTwo(); foreach (string target in stringTwoArr) { // 过滤本地文件可能存在的空行,避免统计错误 if (string.IsNullOrWhiteSpace(target)) continue; foreach (string entry in stringOneArr) { // 忽略大小写全字匹配 if (entry.Equals(target, StringComparison.OrdinalIgnoreCase)) { Console.WriteLine($"匹配到内容:{target}"); instances++; } } } return instances; } // 测试调用入口 public static void Main() { int totalMatch = FindNumberOfSimilarStrings(); Console.WriteLine($"总匹配数:{totalMatch}"); } }
逻辑说明
- 匹配规则采用
StringComparison.OrdinalIgnoreCase实现忽略大小写的全字匹配,完全符合需求要求 - 新增空行过滤逻辑,适配本地配置文件可能存在的空行、空格行场景
- 后续如果需要新增匹配目标,仅需要修改
StringTwo读取的本地文件内容即可,不需要调整匹配主逻辑,满足扩展要求 - 示例场景运行时,
StringOne的Cat、cat会匹配StringTwo的Cat(计2次),bird会匹配StringTwo的Bird(计1次),总匹配数为3,和预期结果一致
内容的提问来源于stack exchange,提问作者SketchedGrey
相关产品推荐
相关产品推荐

