尝试在字符串中查找单词,但获得枚举不会产生结果

本文关键字:枚举 结果 字符串 查找 单词 | 更新日期: 2023-09-27 18:01:53

我有1个长字符串,我想在我的字符串中找到Emp 开头的单词,只有在点之后,如果匹配,然后提取之后的那部分。

下面是我的字符串

Value.EmployeeRFID,Value.EmployeeRFID1,Value.EmkhasisGFTR,Value.EmployeeGHID,Value.EmployeeFCKJ

现在,在我上面的输入中,我只想提取点(Foreg:EmployeeRFID,EmployeeRFID1 etc)之后的部分,我想将其添加到下面的列表中:

var list= new List<string>(); 

上述列表变量的期望输出:

[0]:EmployeeRFID ,[1]=EmployeeRFID1, [2]:EmployeeGHID, [3]:EmployeeFCKJ

这就是我如何尝试linq,但我得到Enumeration yielded no results:

string str="Value.EmployeeRFID,Value.EmployeeRFID1,Value.EmkhasisGFTR,Value.EmployeeGHID,Value.EmployeeFCKJ";
var data= str.Where(t=>t.ToString().StartsWith("Emp")).Select(t=>t.t.ToString()) // Enumeration yielded no results

尝试在字符串中查找单词,但获得枚举不会产生结果

尝试正则表达式:

  string source = "Value.EmployeeRFID,...,Value.EmployeeGHID,Value.EmployeeFCKJ";
  string pattern = @"(?<='.)Emp'w*";
  string[] result = Regex.Matches(source, pattern, RegexOptions.IgnoreCase)
    .OfType<Match>()
    .Select(match => match.Value)
    .ToArray();
测试:

  // EmployeeRFID
  // EmployeeRFID1
  // EmployeeGHID
  // EmployeeFCKJ
  Console.Write(string.Join(Environment.NewLine, result));

string作为LINQ扩展的参数是IEnumerable<char>,因此您的t只有一个字符。您可能想要做这样的事情:

var data= str.Split('.')
             .Where(t => t.StartsWith("Emp")).Select(t => t.Split(',').First())
             .ToList();

但是Dmitry建议的正则表达式似乎是比LINQ更好的字符串解析方法。