-2

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

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

文件名示例:

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

错误信息:

错误消息:System.ArgumentOutOfRangeException:索引和计数必须引用字符串中的位置。

参数名称:计数
  在 System.String.Remove(Int32 startIndex,Int32 计数)
4

2 回答 2

1
string s = "222233334444555561_l1.jpg";
int underScorePos = s.LastIndexOf("_");
if (underScorePos != -1)
    s = s.Substring(1, underScorePos - 1);
于 2012-10-01T07:17:46.037 回答
0

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

        int lastIndex = sFileName.LastIndexOf('_');
        if (lastIndex != -1)
        {
            sVin = sFileName.Remove(lastIndex, sFileName.Length - lastIndex);
        }
于 2012-10-01T07:58:15.663 回答