尝试在字符串中查找单词,但获得枚举不会产生结果
本文关键字:枚举 结果 字符串 查找 单词 | 更新日期: 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更好的字符串解析方法。