黑马程序员技术交流社区

标题: textbox中输入数字 [打印本页]

作者: 李玲    时间: 2012-6-13 10:16
标题: textbox中输入数字
实现在某一textbox里以逗号隔开输入十个0-100之间的整数,若个数不是十个或数字不是整数或不在0-100就提示错误,并重新输入 ,还有textbox输入的时候第一个不允许为逗号,只能输入数字之后才能写逗号。代码该怎么写呢。
作者: 王继光    时间: 2012-6-13 10:30
本帖最后由 王继光 于 2012-6-13 11:04 编辑

1. 获得txtbox里的字符串  str
2. 判断  str[0]  是不是 数字    isNumber()方法
3. 是的话, 分割 字符串,, 判断 长度 是否为10 , 不是返回  string.split()方法以 ,(逗号) 分割
4.循环 判断 分割后的 每个字符串  能不能转化为 整数,, 一旦遇到不能转化为整数 或 转化后的数字不在1-100之  间    返回
作者: 平建    时间: 2012-6-13 10:39
如果你正则学的好的话  建议用正则!
作者: ren1015    时间: 2012-6-13 14:45
问题有点繁琐,思路是先判断第一个字符是不是逗号,在判断逗号的个数是不是9个,再使用split方法分割字符串,判断每部分是不是数值,是不是0-100的整数
作者: ren1015    时间: 2012-6-13 19:23
string str,s1;
            int i;
            str = textBox1.Text;
            s1 = str.Substring(0, 1);
            if (int.TryParse(s1, out i))
            {
                string[] s=str.Split(',');
                if (s.Length == 10)
                {
                    int[] t=new int[10] ;
                    for (i = 0; i <= 9; i++)
                    {
                        if (!int.TryParse(s[i], out t[i]))
                        {
                            MessageBox.Show("包含非数字字符");
                            return;
                        }
                        if (t[i] > 100 || t[i] < 0)
                        {
                            MessageBox.Show("有数值不在0-100范围内");
                            return;
                        }
                    }

                }
                else
                {
                    MessageBox.Show("输入数不够10组");
                    return;
                }
            }
            else
            {
            MessageBox.Show("第一个字符不是数字");
            return;
            }
作者: 黑马-许泽宇    时间: 2012-6-13 22:06
感觉这个用正则表达式判断会好点.
作者: 孙毅    时间: 2012-6-14 15:49
可以这样写
string str = txt控件Id.Text.trim();
if (Regex.IsMatch(str, @"^\d\d?\,(\d\d?\,){8}\d\d?$"))


{

      response.write("格式正确!");

}

else

{

       response.write("格式不正确!");

}




作者: 孙毅    时间: 2012-6-14 15:54
孙毅 发表于 2012-6-14 15:49
可以这样写
string str = txt控件Id.Text.trim();
if (Regex.IsMatch(str, @"^\d\d?\,(\d\d?\,){8}\d\d?$" ...

不好意思,忽略了一点,我判断的是0-99的,把100掉了,在正则再加上|100
作者: 许庭洲    时间: 2012-6-15 09:54
前台用JAVASCRIPT采用keypress事件,或在后台写程序判断,采用.NET2.0中引入的TryParse方法,通过int.TryParse(s1, out i)来判断输入的第一个字符转换为整数是否成功,若成功采用Split(',');方法把输入的数据采用逗号隔开,然后在if语句里面判断输入的个数即可。




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2