【问题标题】:Array of string management字符串管理数组
【发布时间】:2020-02-27 14:03:26
【问题描述】:

我有一个字符串数组,我想把这个数组的一个区间内的所有字符串都取出来,直到字符串不包含任何东西。

类似:

string [] arrayReading = {
  "e","x","a","takefromhere",
  "keeptaking","keeptaking","dont'ttakefromhere","m","p","l","e"
};

我试过了:

        List<string> result = null;

        for (int i = 0; i < arrayReading.Length; i++)
        {
            if (arrayReading[i].Contains("takefromhere"))
            {
                result.Add(arrayReading[i]);

                if (!arrayReading[i + 1].Contains("dont'ttakefromhere"))
                {
                    result.Add(arrayReading[i + 1]);

                    if (!arrayReading[i + 2].Contains("dont'ttakefromhere"))
                    {
                        rescription.Add(arrayReading[i + 1]);
                    }
                }
            }
        }

似乎有效,但它并不是我想要的那样动态,因为也许我需要在“takefromhere”和“don'ttakefromhere”之间取 20 个值。

【问题讨论】:

  • 所以你总会有一个起始值吧,那么和结束值呢,会一直有还是没有?如果没有最终价值,就将它们全部取走,或者在它们之间正确吗?
  • List&lt;string&gt; result = arrayReading.SkipWhile(item =&gt; item != startItem).TakeWhile(item =&gt; item != stopItem).ToList(); 你将拥有{"takefromhere", "keeptaking", "keeptaking"}
  • LINQ 的 SkipWhileTakeWhile 让您几乎可以直接翻译您的规范。

标签: c# arrays string linq asp.net-core


【解决方案1】:

查询时你可以试试Linq

 using System.Linq;

 ...

 List<string> result = arrayReading
   .SkipWhile(item => item != "takefromhere") 
   .TakeWhile(item => item != "dont'ttakefromhere")
   .ToList();

或者如果你想要旧的循环解决方案:

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

 bool taking = false;

 foreach (string item in arrayReading) {
   if (!taking) 
     taking = item == "takefromhere";

   if (taking) {
     if (item == "dont'ttakefromhere")
       break;

     result.Add(item);
   } 
}

让我们看看:

Console.Write(string.Join("; ", result));

结果:

takefromhere; keeptaking; keeptaking

【讨论】:

  • 非常感谢,不知道这个属性 SkipWhile/TakeWhile!
  • @RobNone 它们不是属性...此外,此答案可以解决 OP 在上面的代码中做错了什么,以便用户了解问题所在以及其他任何可能遇到了同样的问题,但是通过提供不同的解决方案来偏离这个问题。
  • @Çöđěxěŕ:或者我们可以有一个新的答案来解决 OP 做错了什么,你甚至可以是写这个的人。 :-)
猜你喜欢
  • 1970-01-01
  • 2021-07-28
  • 1970-01-01
  • 1970-01-01
  • 2023-03-31
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多