在这段代码中,我正在调试,我有这段代码片段:
ddlExpYear.SelectedItem.Value.Substring(2).PadLeft(2, '0');
这是什么回报?我真的不能运行太多,因为它是一个真实的信用卡申请的一部分。您可以从名称中想象的DropDownList包含4位数年份。
更新:谢谢大家。我没有做很多.NET开发,所以设置快速测试对我来说并不快。
答案 0 :(得分:2)
它采用年份的最后两位数字,并在左侧填充零,最多为2个字符。对于截止08年07月等的到期年份看起来像“以防万一”,确保领先的零存在。
答案 1 :(得分:2)
这会将“98”打印到控制台。
class Program
{
static void Main(string[] args)
{
Console.Write("1998".Substring(2).PadLeft(2, '0'));
Console.Read();
}
}
答案 2 :(得分:1)
当然你可以运行它。您无法在正在调试的应用程序中运行它。要了解它正在做什么,而不仅仅是它正在做什么,创建一个新的Web应用程序,放入DropDownList,在其中放置几个静态年份,然后输入您提到的代码并查看它是什么确实。然后你肯定会知道。
答案 3 :(得分:1)
答案 4 :(得分:0)
看起来它正在抓取从第3个字符(如果基于0)到结尾的子字符串,然后如果子字符串的长度小于2,则通过向左侧添加0来使长度等于2。
答案 5 :(得分:0)
PadLeft确保您从输入中接收至少两个字符,用适当的字符填充输入(在左侧)。所以输入,在这种情况下,可能是12.你得到“12”。或输入可能是9,在这种情况下,你得到“09”。
这是一个复杂链接(请参阅"Is there any benefit in Chaining"帖子)出错的示例,并使代码看起来过于复杂。
答案 6 :(得分:0)
子字符串返回跳过前两个字符的值,padleft将结果填入前导零:
string s = "2014";
MessageBox.Show(s.Substring(2).PadLeft(2, 'x')); //14
string s2 = "14";
MessageBox.Show(s2.Substring(2).PadLeft(2, 'x')); //xx
我的猜测是代码试图将年份转换为2位数值。
答案 7 :(得分:0)
如果用户输入的是2或3位数的年份,PadLeft只会执行某些操作。
年份为1位数时,您会收到例外(子订单)。
如果是2位数年份(07,08等),它将返回00.我会说这是一个错误。
如果作者可能认为是拼写错误的3位数年份(207,208),则会返回填充零的最后一位数字 - 207 - > 07; 208 - > 08。
只要用户必须选择一年并且不允许输入一年,PadLeft就是不必要的 - 子串(2)完全符合您需要的4位数年份。
答案 8 :(得分:0)
此代码似乎试图从四位数年份中获取2位数年份(ddlexpyear是提示)
它需要字符串并返回字符串,因此我将避开字符串分隔符:
问题是它没有做好。在这些情况下,填充实际上没有帮助。删除填充代码不会影响它正确的情况。
因此代码可以工作(有或没有焊盘)4个数年,它对其他长度的字符串有什么作用?
答案 9 :(得分:-1)
好的,所以它从下拉列表中获取值,ABCD
然后从位置2获取子串,CD
然后它错了,如果它也需要,则用2个零填充它,CD
或者,如果您刚刚结束X,那么它将子串到X并填充到OX
答案 10 :(得分:-1)
它取一年的最后两位数字,然后用“0”填充到左侧。
所以2010年将是10年,2009年将是09年。
不确定为什么开发人员不只是将下拉列表中的值设置为最后两位数,或者为什么需要左键填充它(除非您处理的是公元0-9岁)。