为什么String.Substring(String.Length-2,1)不起作用?

时间:2017-07-19 06:08:18

标签: c#

所以我得到了产品代码的这个用户输入,我想得到最后一位数,因为那是我需要验证代码的校验位。

而不是使用幻数,我想使用更灵活的东西,无论输入多长或多短,都会返回最后一位数字。

但是我一直在大吼大叫,因为我试图隐含地转换字符串'到' int'如果我尝试使用.Length属性作为起始索引。

int checkDigit = input.Substring(input.Length - 2, 1);

不是String.Length会返回一个数字吗? 它就像for循环中的魅力一样,为什么不在这里?

2 个答案:

答案 0 :(得分:3)

试试这个:

int checkDigit = Int32.Parse(input.Substring(input.Length - 2, 1));

或者更好,以防

int checkDigit = 0;

Int32.TryParse(input.Substring(input.Length - 2, 1), out checkDigit);

您可能还想检查输入是否足够长:

if (input.Length > 3)

答案 1 :(得分:0)

String.Substring()方法从此实例中检索子字符串。子字符串从指定的字符位置开始并具有指定的长度,您不能像过程那样将它们分配给整数变量。

如果您将此分配的目标类型更改为字符串意味着您的代码将起作用,我的意思是:

string checkDigit = input.Substring(input.Length - 2, 1);
相关问题