0

文字列配列のasp.netで条件を確認する必要があります

条件は、2 つの値360__image.jpgimage.jpgのいずれかを持つことができるということです。
条件から正しい値を返す必要があります

  1. 文字列に 360_image.jpg がある場合、image.jpg のみを返して 360_ をカットする必要があります
  2. 文字列が image.jpg の場合、同じ image.jpg を返す必要があります

コード

public string splitString(string str)
{
   string[] FileName = str.Split('_');   
   if (FileName[2] != "")
   {
       return FileName[2];
   }
   else
   {
        return FileName[0];
   }
}

上記のコードの問題は、エラーが発生することです

Index was outside the bounds of the array
4

3 に答える 3

2

配列から要素にアクセスする前に長さを確認する必要があります。これが、例外が発生する理由です。これは、分割により 2 つの要素の配列になる可能性があるためです。

あなたの要件について正確にはわかりませんが、次のように方法を単純化できると思います。

public string splitString(string str)
{
    if (str.Contains("_")) //or check for 360__
        return str.Substring(str.LastIndexOf('_') + 1); 
    else
        return str;
}
于 2013-05-22T06:11:31.540 に答える
1

使用できますLastIndexOf

public string splitString(string str)
{
    return str.Substring(str.LastIndexOf('_') + 1);
}

または LINQ を使用することもできますLast:

public string splitString(string str)
{
    return str.Split('_').Last();
}
于 2013-05-22T06:13:37.047 に答える
0

配列には 2 つの要素があり、idexes 0 と 1 を意味します。

しかし、あなたはあなたのコードにFileName[2].

この 2 番目のインデックスが間違っている可能性があるため、エラーが発生しています。1かもしれません。

試してみてください:

public string splitString(string str)
    {

        string[] FileName = str.Split('_');   

        if (FileName[1] != "")
        {
            return FileName[1];
        }
        else
        {
            return FileName[0];
        }
    }
于 2013-05-22T06:11:50.827 に答える