如何在Collection上的Forloop中的Collection中查找字符串模式的索引

时间:2018-03-10 17:45:24

标签: c# linq

在循环浏览集合时,我会检查"结算地址"模式,然后想要读取和捕获所有行,直到"发货地址"的索引位置。 如何在同一集合的for循环内找到string_pattern中的索引位置。 有没有一种有效的方法来做到这一点 - 也许使用Linq。 ? 这是一个示例代码片段 - 提前谢谢。

    static void Main(string[] args)
    {
        string[] lines = new string[] 
                                {
                                    "bla bla",
                                    "bla bla bla",
                                    "bla bla ...",
                                    "bla bla bla bla",
                                    "Billing Address",
                                    "Billing Address line 1",
                                    "Billing Address line 2",
                                    "Billing Address line 3",
                                    "Billing Address line 4",
                                    "Shipping Address",
                                    "Shipping Address line 1",
                                    "Shipping Address line 2",
                                    "Shipping Address line 3",
                                    "Shipping Address line 4",
                                };

        for (int i = 0; i < lines.Length; i++ )
        {
            if (lines[i].Contains("Billing Address"))
            {
                // Capture all the lines until the line "Shipping Address"

                // Is there a way maybe using Linq to get the index position of "Shipping Address"
            }
        }
    }

2 个答案:

答案 0 :(得分:1)

使用LINQ在"Shipping Address"中获取lines索引的简单解决方案:

var index = Enumerable.Range(0,lines.Length)
                       .FirstOrDefault(i => lines[i] == "Shipping Address");

或者您可以在评论中使用@MongZhu之类的Array.IndexOf

var index = Array.IndexOf(lines, "Shipping Address");

您可以使用以下内容捕获包含lines的{​​{1}}中的所有元素:

"Billing Address"

答案 1 :(得分:0)

您可以使用linq过滤您的收藏:

var result = lines.Where(s => s.StartsWith("Billing Address"));

或者,如果您更喜欢使用包含:

var result = lines.Where(s => s.Contains("Billing Address"));