【问题标题】:Obtaining items in a List based off a specified value through "=" character通过“=”字符根据指定值获取List中的项目
【发布时间】:2020-05-12 01:21:29
【问题描述】:

我有一个存储的值列表,我在其中添加了一个等号作为“生产”和“测试”,如下所示。

List<string> data = new List<string>();

            data.Add("app01=production");
            data.Add("app02 = test");
            data.Add("app03 = production");

使用这个列表说我想提取等于 "production" 的值。现在使用 string.contains 方法可以轻松完成,但我真正想要存储的只是第一部分,例如我只想将值“app01”和“app02”存储在单独的列表中,而不是“app01=生产”和 app03 = 生产”。

关于如何继续的任何建议?

这是我目前的代码

static void Main(string[] args)
        {
            List<string> data = new List<string>();

            data.Add("app01=production");
            data.Add("app02 = test");
            data.Add("app03 = production");

            List<string> production = new List<string>();


            foreach (var item in data)
            {
                if (item.Contains("production"))
                {
                    production.Add(item); 
                }
            }


        }

【问题讨论】:

    标签: c# .net string list


    【解决方案1】:

    您可以Split= 字符上的每个字符串,检查拆分的第二部分是否包含"production",如果包含,则使用一些@987654330 选择第一部分(进入List&lt;string&gt;) @:

    List<string> production = data.Select(item => item.Split('='))
        .Where(part => part.Length > 1 &&
                       part[1].Contains("production"))
        .Select(part => part[0].Trim())
        .ToList();
    

    示例输出

    production.ForEach(Console.WriteLine);
    


    如果由于某种原因您不想使用 Linq,您可以使用循环通过找到等号的 IndexOf 并比较项目的 Substring 之后 "production" 的等号,如果匹配,则返回字符串的 first 部分直到等号(使用 Trim 删除任何前导或尾随空格):

    List<string> production = new List<string>();
    
    foreach (var item in data)
    {
        var equalsIndex = item.IndexOf("=");
    
        if (equalsIndex > 0 && item.Substring(equalsIndex).Contains("production"))
        {
            production.Add(item.Substring(0, equalsIndex).Trim());
        }
    }
    

    【讨论】:

      猜你喜欢
      • 2010-10-13
      • 2013-07-06
      • 1970-01-01
      • 2018-09-01
      • 1970-01-01
      • 1970-01-01
      • 2016-05-29
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多