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

07-28 01:38
查看更多