C# 尝试在字符串中查找单词,但获取枚举不会产生任何结果

C# 尝试在字符串中查找单词,但获取枚举不会产生任何结果,c#,.net,string,linq,C#,.net,String,Linq,我有一个长字符串,我想在字符串中查找以“Emp开头的单词,仅在点之后,如果匹配,则提取“点之后的部分” 下面是我的字符串: Value.EmployeeRFID,Value.EmployeeRFID1,Value.EmkhasisGFTR,Value.EmployeeGHID,Value.EmployeeFCKJ 现在,在我上面的输入中,我只想提取点后面的部分(Foreg:EmployeeRFID,EmployeeRFID1等),我想将其添加到下面的列表中: var list= new Lis

我有一个长字符串,我想在字符串中查找以“
Emp
开头的单词,仅在点之后,如果匹配,则提取“之后的部分”

下面是我的字符串:

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

var list= new List<string>(); 
这就是我尝试使用linq的方式,但是我得到的
枚举没有产生任何结果

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
作为LINQ扩展的参数是一个
IEnumerable
,因此您的
t
仅为一个字符。你可能想做这样的事情:

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

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

string
因为LINQ扩展的参数是一个
IEnumerable
,所以您的
t
只有一个字符。你可能想做这样的事情:

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

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

研究正则表达式-可能使用类似于
\(Emp[^,]+)
的模式。您在这里看到以“Origin”开头的子字符串了吗?@Steve:更新了我的查询,但得到了相同的正则表达式输出外观-可能使用了类似于
\(Emp[^,]+)
的模式。您在这里看到以“Origin”开头的子字符串了吗?@Steve:更新了我的查询,但得到了相同的输出。这是可行的,但这是否可能,当匹配Emp单词时,如果我有Emp,那么它也应该匹配,因为在字符串的1部分中,当我得到Value.employeeRFID时,我没有得到employee。RFID@Learning:只需添加
RegexOptions.IgnoreCase
选项(请参见我的编辑)太好了。非常感谢您的帮助,请继续这样帮助:)好的,这是可行的,但这是否可能,当匹配Emp单词时,如果我有Emp,那么它也应该匹配,因为在字符串的1部分中,当我得到值时。employeeRFID,那么我没有得到employee。RFID@Learning:只需添加
RegexOptions.IgnoreCase
选项(参见我的编辑)完美。非常感谢您的善意帮助,请继续这样帮助:)工作正常。非常感谢您的善意帮助,请继续这样帮助:)工作正常。非常感谢您的善意帮助,请继续这样帮助:)
  // EmployeeRFID
  // EmployeeRFID1
  // EmployeeGHID
  // EmployeeFCKJ
  Console.Write(string.Join(Environment.NewLine, result));
var data= str.Split('.')
             .Where(t => t.StartsWith("Emp")).Select(t => t.Split(',').First())
             .ToList();