我正在向下面的代碼示例傳遞不同的文件名並且出現如下錯誤。但對於相同的數據,它在我的最後工作正常,但在客戶端發出這些錯誤。String.Remove給出錯誤
如果因爲其他原因可能會發生,請提出建議。注意:這是由其他人編寫的維護代碼,我需要修復此問題,並在可能的情況下對其進行改進。
文件名示例:
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)
可以將用戶的文件名有它的'l1'下劃線在什麼地方? – Rawling
sVin = sFileName.Remove(sFileName.LastIndexOf('_'),7); LastIndexOf將無法從索引7中找到「_」,所以它不會返回任何字符串,因此Remove將失敗。 – MarsRover
不要編寫你可能會失敗的代碼。 –