gpt4 book ai didi

c# - 在 if 语句中使用 string.length 的误报

转载 作者:行者123 更新时间:2023-12-03 20:31:10 24 4
gpt4 key购买 nike

我正在尝试格式化电话号码。也许我的方法不是最好的,但除了一些意外行为外它是有效的。我在 if 语句中使用 string.length 来查看电话号码的长度(存储为字符串)是否大于 9。我还尝试了 >= 10 而不是 > 9,结果相同。 18001234567 或 7041234567 一切正常。我得到 (800) 123-4567 或 (704) 123-4567。但是对于 828464047,我得到 (82) 846-4047 而不是按原样返回的数字。

try
{
if (ANI.Length > 9)
{
char[] Number1 = { '1' };
ANI = ANI.TrimStart(Number1);
return String.Format("{0:(###) ###-####}", Convert.ToDouble(ANI));
}
else if (ANI == "")
{
return "Private";
}
else
{
return ANI;
}
}
catch (Exception ex)
{
return ex.Message;
}

有什么想法吗?有没有更好的方法来解决这个问题?

谢谢。

如果我更改格式化电话号码的代码以使用子字符串,事情就会如预期的那样中断。

return "(" + ANI.Substring(0, 3) + ") " + ANI.Substring(3, 3) + "-" + ANI.Substring(6, 4);

异常被捕获并返回“索引和长度必须引用字符串中的位置。参数名称:长度”。

最佳答案

我将它放入单元测试方法中,它起作用了。您显然在字符串 828464047 上添加了一个额外的字符。您可以调试并在 IF 语句处放置一个断点,然后查看 ANI 中的实际内容。

还有一些事情,

  • 不要将变量命名为模棱两可的名称,例如“ANI”。
  • 将 Number1 重命名为类似“firstNumber”的名称
  • 此语句不需要 try/Catch,如果您遇到异常,您正在做的事情可以通过更好的编码来解决。

关于c# - 在 if 语句中使用 string.length 的误报,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8359000/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com