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

如何高效查找文本中包含"srv"的所有单词?

解决方法

你的代码没出结果的原因很直接:你在遍历字符串的单个字符,单个字符不可能包含"srv"这个三字符的字符串,自然找不到匹配项。

要实现需求,得先把文本拆分成独立单词,再筛选包含"srv"(不区分大小写)的单词,以下是两种高效的实现方式:

方式一:正则匹配(推荐,适配复杂单词格式)

正则能更准确地识别带特殊符号(比如连字符)的单词,适合大多数场景:

using System.Text.RegularExpressions;

string text = "Hello, this is test TEST-SRVCole";
// 匹配包含连字符的单词,比如TEST-SRVCole
var words = Regex.Matches(text, @"\w+([-]\w+)*")
                 .Cast<Match>()
                 .Select(match => match.Value);

// 不区分大小写筛选包含"srv"的单词
var targetWords = words.Where(word => word.IndexOf("srv", StringComparison.OrdinalIgnoreCase) >= 0)
                       .ToArray();

foreach (var word in targetWords)
{
    Console.WriteLine(word);
}

说明:

  • \w+([-]\w+)* 是正则表达式,用来匹配由字母数字组成、中间可带连字符的单词
  • IndexOf 搭配 StringComparison.OrdinalIgnoreCase 比ToLower().Contains更高效,不需要额外生成小写字符串

方式二:按空格拆分(适合简单文本)

如果你的文本只有空格分隔单词,且标点不多,可以用拆分+去标点的方式:

string text = "Hello, this is test TEST-SRVCole";
// 按空格拆分,去掉空项,再清理单词首尾的标点
var words = text.Split(' ', StringSplitOptions.RemoveEmptyEntries)
                .Select(word => word.Trim(new[] { ',', '.', '!', '?' }));

// 筛选目标单词
var targetWords = words.Where(word => word.IndexOf("srv", StringComparison.OrdinalIgnoreCase) >= 0)
                       .ToArray();

foreach (var word in targetWords)
{
    Console.WriteLine(word);
}

内容的提问来源于stack exchange,提问作者Petr Barabáš

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.20 15:03:32