You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

ASP.NET C#中如何提取两个字符串的共同词并输出为逗号分隔字符串

嘿,这需求我熟!在ASP.NET C#里实现这个功能,得把几个细节处理好——比如逗号拆分后的空格清理、大小写匹配的问题,还有要确保是完整的词汇/短语匹配,不能只匹配一部分。我给你整理一套靠谱的实现方案:

具体实现步骤

1. 预处理词汇列表

首先把逗号分隔的strOne拆分成单个词汇,同时清理每个词汇前后的空格,还要保留原始格式(方便最后输出),另外转成统一小写用于后续的比对,避免大小写不一致导致匹配失败。

2. 精准匹配段落中的词汇

直接用字符串Contains方法容易踩坑——比如word会匹配wording这种部分匹配的情况。所以最好用正则表达式,通过单词边界来确保匹配的是完整的词汇/短语,同时支持大小写不敏感。

3. 收集匹配结果并拼接

遍历预处理后的词汇列表,把在strTwo中找到的词汇收集起来,最后用逗号连接成目标字符串strThree。


完整代码示例
string strOne = "word,WordTwo,another word, a third long word, and so on";
string strTwo = " when search a word or try another word you may find that WordTwo is there with others";

// 拆分并预处理词汇:清理空格,同时保留原始值和小写匹配值
var processedWords = strOne.Split(',')
    .Select(word => new 
    {
        Original = word.Trim(),
        LowercaseMatch = word.Trim().ToLower()
    })
    .Where(item => !string.IsNullOrWhiteSpace(item.Original)) // 过滤空的无效项
    .ToList();

var matchedWords = new List<string>();

foreach (var wordItem in processedWords)
{
    // 用正则实现完整短语匹配,忽略大小写,同时转义特殊字符避免正则报错
    var matchPattern = $@"\b{Regex.Escape(wordItem.LowercaseMatch)}\b";
    if (Regex.IsMatch(strTwo, matchPattern, RegexOptions.IgnoreCase))
    {
        matchedWords.Add(wordItem.Original);
    }
}

// 拼接成逗号分隔的结果字符串
string strThree = string.Join(", ", matchedWords);

// 输出结果:word, WordTwo, another word
Console.WriteLine(strThree);
关键细节说明
  • 空格处理:用Trim()清理每个词汇前后的空格,解决strOne里类似" a third long word"这种带前置空格的情况。
  • 避免部分匹配:正则里的\b是单词边界,确保只会匹配完整的词汇/短语,不会把word误匹配成words或者wording。
  • 大小写兼容:通过RegexOptions.IgnoreCase实现大小写不敏感匹配,不管是WordTwo还是wordtwo都能匹配到段落里的WordTwo。
  • 特殊字符兼容:Regex.Escape()会自动转义词汇里的正则特殊字符(比如$、*、.),避免正则表达式失效。

如果需要大小写敏感的匹配,只需要去掉RegexOptions.IgnoreCase,并且不用转小写即可。另外如果段落里有标点符号(比如word.),可以先清理段落里的标点再进行匹配,或者调整正则表达式来忽略标点。

内容的提问来源于stack exchange,提问作者hsobhy

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 07:36:20