C# 如何从列表中获取具有特定文本的索引?
我有一张单子C# 如何从列表中获取具有特定文本的索引?,c#,arraylist,C#,Arraylist,我有一张单子 List myArray=new List() { “sometext”、/*1*/ “desireText”/*2*/ “sometext”、/*3*/ “sometext”、/*4*/ “desireText”/*5*/ “desireText”/*6*/ “sometext”、/*7*/ “sometext”、/*8*/ “desireText”/*9*/ “sometext”、/*10*/ “desireText”,/*11*/ “desireText”/*12*/ “de
List myArray=new List()
{
“sometext”、/*1*/
“desireText”/*2*/
“sometext”、/*3*/
“sometext”、/*4*/
“desireText”/*5*/
“desireText”/*6*/
“sometext”、/*7*/
“sometext”、/*8*/
“desireText”/*9*/
“sometext”、/*10*/
“desireText”,/*11*/
“desireText”/*12*/
“desireText”,/*13*/
“sometext”、/*14*/
“sometext”、/*15*/
“sometext”/*16*/
};
我写错了代码:
列表索引=新列表();
for(int i=0;i
如何在以下条件下获取“desireText”的索引:
如果后续元素相等,则只取第一个索引项。
也就是说,结果应该是:
index={1,4,8,10}
您可以将条件添加到循环中:
List<Int32> indexes = new List<Int32>();
bool wasValid = false; // flag if previous item was valid
for (int i = 0; i < myArray.Count; i++)
{
if (IsValidText(myArray[i]))
{
if (!wasValid) // previous item was not valid
indexes.Add(i); // note fix to keep as 0-based index
wasValid = true;
}
else
{
wasValid = false; // for next loop
}
}
列表索引=新列表();
bool wasValid=false;//标记上一项是否有效
for(int i=0;i
您也可以提出Linq方法,但它可能更难读取和调试,而且不会更快。该代码有什么问题?最大连续“desiredText”=5。在任何情况下,在一个“desiredText”和另一个“desiredText”之间都会有一个或多个“sometext”。@streamdown:result
index={1,4,8,10}
您期望它是什么?你能把IsValidText(string)
的代码也贴出来吗?@SamIam它会在不应该的时候打印出5、7、11和12。你还想检查前一项不是“DesiredText”是的,我想这就是他想要的。在执行索引后,您需要将wasValid
翻转为true。添加()
。是的,这就是我要找的。只有少量添加索引。添加(i-1);您提供的输入将为您提供{0,3,7,9}
,除非您的输入是基于1的索引,而不是列表。我无法想象你想要一个负的基于一的索引。如果两个数组都是基于0的,那么给出的预期输出是正确的。如果输入基于1,输出基于0,则i-1
是正确的。