索引和长度必须引用字符串的位置。参数名称:长度错误
Index and length must refer to a location with the string. Parameter name: length error
我的程序最近收到此错误,我不确定原因。触发它的代码是:
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
所以我不确定发送的字符串有什么问题。我想事先检查导致错误的原因,因为异常正在停止程序和错误数据会存在一段时间直到修复,以后可能会添加更多。
如有任何帮助,我们将不胜感激!
您使用的 IndexOf 变量与您想要获取子字符串的变量不同,因此索引将超出范围。
尝试:已编辑
variable = variable.Trim();
int index = variable.IndexOf("-");
if (index > 0)
variable.Substring(0, index);
另一种方法是使用 Contains
检查字符是否存在,如果找到则使用 IndexOf
,否则就使用字符串的 Length
(并将 Trim
放在末尾以避免在修剪后使用 Length
出现问题):
variable.Substring(0, variable.Contains('-')
? variable.IndexOf('-')
: variable.Length)
.Trim();
根据您的代码更新的新答案:
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 的变量与您想要获取子字符串的变量不同
我的程序最近收到此错误,我不确定原因。触发它的代码是:
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
所以我不确定发送的字符串有什么问题。我想事先检查导致错误的原因,因为异常正在停止程序和错误数据会存在一段时间直到修复,以后可能会添加更多。
如有任何帮助,我们将不胜感激!
您使用的 IndexOf 变量与您想要获取子字符串的变量不同,因此索引将超出范围。
尝试:已编辑
variable = variable.Trim();
int index = variable.IndexOf("-");
if (index > 0)
variable.Substring(0, index);
另一种方法是使用 Contains
检查字符是否存在,如果找到则使用 IndexOf
,否则就使用字符串的 Length
(并将 Trim
放在末尾以避免在修剪后使用 Length
出现问题):
variable.Substring(0, variable.Contains('-')
? variable.IndexOf('-')
: variable.Length)
.Trim();
根据您的代码更新的新答案:
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 的变量与您想要获取子字符串的变量不同