C# 方法来验证数组字符串值?

C# 方法来验证数组字符串值?,c#,validation,C#,Validation,我有一个方法,我希望能够验证方法中的字符串数组。但是,如果字符串数组按值的数量增减,我该怎么做呢?例如,一个字符串可能有2个项,而下一个字符串数组中可能有3个项 如果我有一个字符串大于方法中的字符串,则会得到错误:System.IndexOutOfRangeException:Index超出了数组的边界。 到目前为止,我的方法如下: string1 = "item1, item2"; string2 = "item01, item02, item03"; private void Verify

我有一个方法,我希望能够验证方法中的字符串数组。但是,如果字符串数组按值的数量增减,我该怎么做呢?例如,一个字符串可能有2个项,而下一个字符串数组中可能有3个项

如果我有一个字符串大于方法中的字符串,则会得到错误:System.IndexOutOfRangeException:Index超出了数组的边界。 到目前为止,我的方法如下:

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....
    }
}
string1=“项目1,项目2”;
string2=“item01、item02、item03”;
私有void VerifyArrayString(字符串字符串)
{
var elements=theString.Splitnew[]{',},System.StringSplitOptions.removeMptyEntries);

对于(int i=0;i,您可以使用LINQ过滤:


这只会产生非空的元素。

如果你问如何确保你有足够的元素来完成你要做的事情,你必须这样做:

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....
        }
    }
}
为清晰起见,进行了修订:

根据您的注释,每次尝试操作数组的某个值时,您都需要检查数组长度。以下是示例代码:

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
       }
    }
}
string1=“item1,item2”;
string string2=“item01、item02、item03”;
私有void VerifyArrayString(字符串字符串)
{
var elements=theString.Split(new[]{',},System.StringSplitOptions.removemptyEntries);

对于(int i=0;i为什么你要增加3而不是1?为什么你不使用
i
作为索引?为什么你要增加
i
三次?
array
s可以更容易地处理。拼写错误。重新检查帖子。这会通过字符串数组检查字符串中是否有2、3或4项吗?@newguyontherock是的。我想能够但要单独超过这些项。@newguyontherock这正是a所需要的。每次迭代,
元素
变量将是数组中的下一项。使用我的帖子中的相同方法并用foreach…循环更新它,当我有一个包含三项的字符串数组时,它将失败。错误与我的post。我想在任何字符串数组上使用相同的方法,无论该字符串有两项、三项或四项,或者当超过字符串中的项时,该方法不会失败。当我到达If(元素[4]!-null)时,它会立即出错…因为没有元素可读取该索引。然后您将要使用第二个代码段,检查elements.length>#&elements[#]!=null。但是,如果我要控制台记录元素,它将根据我拥有的元素量输出三次?我不明白您在问什么。您想做什么?
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
       }
    }
}