2015-07-01 3 views
0

У меня есть метод, я хочу иметь возможность проверить строковый массив внутри метода. Но как бы это сделать, если массив строк увеличится и уменьшится на количество значений, например, одна строка может иметь 2 элемента, а следующая может иметь 3 элемента в массиве строк?Метод проверки значений строки массива?

Если у меня есть строка, которая больше, чем у меня внутри метода, я получаю сообщение об ошибке: System.IndexOutOfRangeException: индекс находился за пределами массива. Вот мой метод до сих пор:

string1 = "item1, item2"; 
string2 = "item01, item02, item03"; 

private void VerifyArrayString(string theString) 
{ 
    var elements = theString.Splitnew[] { ',' }, System.StringSplitOptions.RemoveEmptyEntries); 
    for(int i=0; i<elements.Length; i +=1) 
    { 
     if(elements[0] != null) 
     { 
      //do something 
     } 
      if(elements[1] != null) 
      { 
       //do something 
      } 
       // and so and so with the next items.... 
    } 
} 
+0

Почему вы увеличиваете на 3 вместо 1? И почему вы не используете 'i' для индекса? – juharr

+0

Почему вы увеличиваете 'i' трижды? 'array' можно обрабатывать более легко. –

+0

опечатка. перепроверьте сообщение. – TheNewGuyOnTheRock

ответ

0

Если вы спрашиваете, как убедиться, что у вас есть достаточное количество элементов для того, что вы пытаетесь сделать, вы должны сделать что-то вроде этого:

string string1 = "item1, item2"; 
string string2 = "item01, item02, item03"; 

private void VerifyArrayString(string theString) 
{ 
    var elements = theString.Split(new[] { ',' }, System.StringSplitOptions.RemoveEmptyEntries); 
    if (elements.Length >= (minimumNumber)) 
    { 

     for (int i = 0; i < elements.Length; i += 3) 
     { 
      if (elements[0] != null) 
      { 
       //do something 
      } 
      if (elements[1] != null) 
      { 
       //do something 
      } 
      // and so and so with the next items.... 
     } 
    } 
} 

Или, если вы хотите, чтобы иметь возможность изменить некоторые цифры и не все, вы должны пройти через каждый из них вы изменяющихся и убедитесь, что у вас есть правильная длина, такие как:

if(elements.Length > 0 && elements[0] != null) 
{ 
    //do something 
} 
//etc etc etc 

пересмотренном для ясности:

основы у наш комментарий, вы захотите проверить длину вашего массива каждый раз, когда пытаетесь манипулировать одним из значений массива. Вот пример кода:

string string1 = "item1, item2"; 
string string2 = "item01, item02, item03"; 

private void VerifyArrayString(string theString) 
{ 
    var elements = theString.Split(new[] { ',' }, System.StringSplitOptions.RemoveEmptyEntries); 
    for(int i=0; i<elements.Length; i++) 
    { 
     if(elements[i] != null) 
     { 
      //do something 
     } 
    } 
} 
+0

Я хочу использовать один и тот же метод для любого строкового массива, имеет ли строка две позиции или три элемента или четыре элемента, или что без метода, не выполняющего при превышении элементов в строке. – TheNewGuyOnTheRock

+0

он ошибается, как только я добираюсь до If (elements [4]! -null) ..... потому что для этого индекса нет элемента. – TheNewGuyOnTheRock

+0

Затем вы захотите использовать этот второй фрагмент кода, проверьте, были ли элементы element.length> # && [#]! = Null – oppassum

0

Вы можете использовать LINQ для фильтрации с Enumerable.Where:

private void VerifyArrayString(string theString) 
{ 
    var elements = theString.Split(new[] { ',' }, 
            StringSplitOptions.RemoveEmptyEntries); 

    foreach (var element in elements.Where(el => !string.IsNullOrEmpty(el)) 
    { 
     if (element == "SomeString") 
     { 
      // Do Something 
     } 
    } 
} 

Это только выход элементы, которые не null или пустая строка.

+0

будет ли это проходить через массив строк, имеет ли он 2, 3 или 4 элемента в строке? – TheNewGuyOnTheRock

+0

@ TheNewGuyOnTheRock Да. –

+0

Я хочу, чтобы каждый из этих элементов мог быть в избытке. – TheNewGuyOnTheRock

Смежные вопросы