0

我必须在 asp.net 中检查字符串数组的条件

条件是我可以有两个值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

您应该在访问数组中的元素之前检查长度,这就是您遇到异常的原因,因为 split 可能导致两个元素的数组。

不完全确定您的要求,但我认为您可以将方法简化为:

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 个元素,表示索引 0 和 1。

但是您已将代码作为FileName[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 回答