我的程序最近收到此错误,我不知道为什么。触发它的代码是:
foreach (var lot in item.LotNum.Split('|'))
{
string vendor = string.Empty;
if (lot.Trim().Contains("-"))
vendor = lot.Trim().Substring(0, item.LotNum.IndexOf("-"));
}
当错误触发时, LotNum =“br549 | BR549 | 570-PRIOR”并且批次为“570-PRIOR”(没有引号)。我之前没有使用IndexOf
所以我不确定发送的字符串有什么问题。我想事先检查是什么原因导致错误,因为例外是停止程序和坏数据将会有一段时间,直到它被修复,并且将来可能会添加更多。
任何帮助将不胜感激!
答案 0 :(得分:2)
根据您的代码更新的新答案:
var lots = item.LotNum.Split('|');
foreach (var lot in lots)
{
string vendor = string.Empty;
if (lot.Contains("-"))
vendor = lot.Substring(0, lot.IndexOf("-")).Trim();
}
同样,您使用IndexOf作为不同于您想要获得子字符串
的变量答案 1 :(得分:1)
您正在将IndexOf用于与您想要获取子字符串的变量不同的变量,因此,索引将超出范围。
尝试:已编辑
variable = variable.Trim();
int index = variable.IndexOf("-");
if (index > 0)
variable.Substring(0, index);
答案 2 :(得分:0)
另一种方法是使用Contains
检查字符是否存在,如果找到它使用IndexOf
,否则只需使用Length
的{{1}}字符串(并在最后添加Trim
以避免在修剪后使用Length
时出现问题:
variable.Substring(0, variable.Contains('-')
? variable.IndexOf('-')
: variable.Length)
.Trim();