c# - 我的代码可能有什么问题?
问题描述
我正在尝试解决另一个问题。如果存储在 string(id) 中的字符不等于 13,则程序必须显示“Invalid Length”,这些字符输入到文本框中txtId
。但是,每当满足此条件时,我都会收到错误消息
System.ArgumentOutOfRangeException: '索引和长度必须引用字符串中的位置。参数名称:长度'
string id = txtId.Text.Substring(0, 13);
if (!(id.Length==13))
{
LblDisp.Text = "Invalid Length";
}
else
{
string year = id.Substring(0, 2).ToString();
string month = id.Substring(2, 2).ToString();
string day = id.Substring(4, 2).ToString();
string gender = id.Substring(6, 1).ToString();
int yy = int.Parse(year);
int mm = int.Parse(month);
int dd = int.Parse(day);
int xx = int.Parse(gender);
if (!(yy >= 40 && yy <= 99) || (yy >=0 && yy <= 18))
{
LblDisp.Text = "Invalid Year";
}
}
解决方案
.Substring()
如果您尝试超出其范围,将引发异常。所以如果这个词是“josh”并且你去了"josh".Substring(0,8)
它会抛出一个异常,因为 josh 只有 4 个字母,而我正在尝试将子字符串转换为 8。
要修复它首先检查长度
if (!(txtId.Text.Length==13))
{
LblDisp.Text = "Invalid Length";
}
else
{
string id = txtId.Text; // you do not need to even do SubString now as you know it is a length of 13
string year = id.Substring(0, 2).ToString();
string month = id.Substring(2, 2).ToString();
string day = id.Substring(4, 2).ToString();
string gender = id.Substring(6, 1).ToString();
int yy = int.Parse(year);
int mm = int.Parse(month);
int dd = int.Parse(day);
int xx = int.Parse(gender);
if (!(yy >= 40 && yy <= 99) || (yy >=0 && yy <= 18))
{
LblDisp.Text = "Invalid Year";
}
推荐阅读
- android - 方法 onCreate(Bundle) 已在 MainActivity 类中定义
- kubernetes - Pod 连接失败 - 从 pod 获取响应时操作超时
- sql - 访问 VBA DlookUp 查询 SQL
- mysql - 如何在 bash 脚本中捕获 mysqldump 错误?
- javascript - 客户未收到来自页面的电子邮件
- azure - Azure AD B2C 更改租户名称
- excel - 将字符串公式+变量循环成“真实”公式
- sql-server - 至少一个字母和一个数字的七个字符的 T-SQL PATINDEX 模式
- php - PHP MySQL SELECT中的嵌套if语句
- regex-group - .Net 正则表达式提取“名称和地址:”数据但不提取标题,其中数据可能位于 1-3 行