我有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));