【发布时间】:2015-01-28 20:27:23
【问题描述】:
我有一个电话号码列表,有些带有分机号,有些没有。 我正则表达式我的电话号码只返回数字。
然后我为前 10 位数字(区号 + 号码)创建一个字符串。
我比较了这个字符串的长度并将其与原始字符串进行比较。 如果有区别,我用余数作为扩展名。
在下面的代码中,我不断收到超出范围的异常。我已经调试过了,它似乎没有超出范围。有人看到我错过了什么吗?
var prePhone = emp.y.PhoneNumber;
if (!string.IsNullOrEmpty(prePhone))
{
string xPhone = Regex.Replace(prePhone, "[^0-9]", "");
string number = xPhone.Substring(0, 10);
int extMath = xPhone.Length - number.Length;
if (extMath >= 1)
{ int preExt = 9 + extMath;
string ext = xPhone.Substring(10, preExt);//Out of range exception
em.Phone = beautifyPhoneNumber(number, ext);
}
else {
string ext = null;
em.Phone = beautifyPhoneNumber(number, ext);
}
}
【问题讨论】:
-
“似乎没有超出范围”。您能否发布导致异常的确切字符串?
-
@dariogriffo 它在代码中的注释中注明。
-
请您告诉我们错误的堆栈跟踪是什么,表明您的源代码中的哪一行是问题
-
我们好奇的是,当异常发生时,xPhone 和 preExt 的值是什么。
-
不应该是
xPhone.Substring(10, extMath)吗?看到你在你的 preExt 中添加 9,你会得到一个 (10, 11) 的子字符串?