String.Remove给出错误

时间:2012-10-01 07:08:24

标签: c#

我将不同的文件名传递给下面的代码示例,并收到如下错误。但对于相同的数据,它在我的最后工作正常,但在客户端给出了这些错误。

如果由于其他原因可能会发生,请建议我。注意:这是由其他人编写的维护代码,我需要解决问题并尽可能改进它。

文件名样本:

222233334444555561_l.jpg
222233334444555561_l1.jpg

代码:

if (sFileName.LastIndexOf('_') != -1)
{
    if (fileName.IndexOf("l1") != -1)
        sVin = sFileName.Remove(sFileName.LastIndexOf('_'), 7);
    else
        sVin = sFileName.Remove(sFileName.LastIndexOf('_'), 6);
}

行错误:

sVin = sFileName.Remove(sFileName.LastIndexOf('_'), 7);

这意味着输入样本的错误如:222233334444555561_l1.jpg

错误讯息:

ERROR MESSAGE : System.ArgumentOutOfRangeException: Index and count must refer to a location   within the string.

Parameter name: count
  at System.String.Remove(Int32 startIndex, Int32 count)

2 个答案:

答案 0 :(得分:1)

string s = "222233334444555561_l1.jpg";
int underScorePos = s.LastIndexOf("_");
if (underScorePos != -1)
    s = s.Substring(1, underScorePos - 1);

答案 1 :(得分:0)

您可以简化它以避免ArgumentOutOfRangeException异常

        int lastIndex = sFileName.LastIndexOf('_');
        if (lastIndex != -1)
        {
            sVin = sFileName.Remove(lastIndex, sFileName.Length - lastIndex);
        }