【发布时间】: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<string> result = arrayReading.SkipWhile(item => item != startItem).TakeWhile(item => item != stopItem).ToList();你将拥有{"takefromhere", "keeptaking", "keeptaking"} -
LINQ 的
SkipWhile和TakeWhile让您几乎可以直接翻译您的规范。
标签: c# arrays string linq asp.net-core