我将不同的文件名传递给下面的代码示例,并收到如下错误。但对于相同的数据,它在我的最后工作正常,但在客户端给出了这些错误。
如果由于其他原因可能会发生,请建议我。注意:这是由其他人编写的维护代码,我需要解决问题并尽可能改进它。
文件名样本:
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)
答案 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);
}