佳礼资讯网

 找回密码
 注册

ADVERTISEMENT

搜索
查看: 1408|回复: 19

C# 计算IC number 怎样 set 限制 Length ?

[复制链接]
发表于 4-6-2009 10:43 AM | 显示全部楼层 |阅读模式
输入 xxxxxxxxxxxxx or xxxxxx-xx-xxxx 都可以计算
可是要怎样限制 他不要超过 12 or 14 个数字
我输入超过12个位数(没有 - 的话) 或 有 - 的超过 15 个数字,他还是跑去算
如果输入abcd 英文数字也是会跑出来 @@
回复

使用道具 举报


ADVERTISEMENT

发表于 4-6-2009 09:11 PM | 显示全部楼层
弄一个preprocess routine,把全部非数字(0-9)去除掉才process就可以了嘛
回复

使用道具 举报

发表于 4-6-2009 09:33 PM | 显示全部楼层
用 Key Down event 来防止 user key in non numeric character
回复

使用道具 举报

 楼主| 发表于 5-6-2009 09:56 AM | 显示全部楼层
我试用了 isDigit 和 replace 还是不能

如果
string id= icnum.Replace("-",string.Empty);
输入 abc 他还是会计算

如果
string id= icnum.Replace("A-Z,a-z,-",string.Empty);
输入 abcd 他还是计算
而且如果有输入 - array 都乱掉




isDigit 我不会写

        string g = icnum;
        foreach (char c in g)
{
if (char.IsDigit(c))

blah blah blah




要怎样限制他的数目
例如不能超过 xxxxxx-xx-xxxx or 12个号码
因为如果用 Replace ,输入 xxxxxx-xx-xxxxxxxxx 超过了他还是照样计算




还有就是不懂为什么

如果我用
if (long.TryParse(icnum, out nNum)) 有error

一直说 'long' does not contain a definition for 'TryParse'

我是用 Microsoft Visual Studio .NET 2003 ,是不是版本的问题?

[ 本帖最后由 xiaoxiang 于 5-6-2009 09:58 AM 编辑 ]
回复

使用道具 举报

发表于 5-6-2009 10:18 AM | 显示全部楼层
为什么不用MaskedTextBox??设一个######-##-####的mask不就了了?还要这么麻烦?
回复

使用道具 举报

 楼主| 发表于 5-6-2009 10:40 AM | 显示全部楼层
我不会呢
可以教我吗 大大?

icnum.Mask =
"#####-##-####";



这样?

[ 本帖最后由 xiaoxiang 于 5-6-2009 10:45 AM 编辑 ]
回复

使用道具 举报

Follow Us
发表于 5-6-2009 11:44 AM | 显示全部楼层
原帖由 xiaoxiang 于 5-6-2009 10:40 AM 发表
我不会呢
可以教我吗 大大?

icnum.Mask =
"#####-##-####";



这样?


你都對了
回复

使用道具 举报

发表于 5-6-2009 01:13 PM | 显示全部楼层
原帖由 xiaoxiang 于 5-6-2009 10:40 AM 发表
我不会呢
可以教我吗 大大?

icnum.Mask =
"#####-##-####";



这样?


是没错啦,不过为什么不用MaskedTextBox 的 property editor 里面的 Mask Editor 呢??你很喜欢绕远路哦。

另外补充一下, # 代表的是数目字+空白,如果你要它只接受纯数字,应该使用 0 作为Mask (请参考 MaskTextBox 的说明书)
回复

使用道具 举报


ADVERTISEMENT

 楼主| 发表于 6-6-2009 10:30 AM | 显示全部楼层
我不会写masked text box,我只是大概猜而已
上网找了example 都不会

用 ConsoleApplication 写
我只会用 while (icnum.Length> 14 || icnum.Length < 12)

[ 本帖最后由 xiaoxiang 于 6-6-2009 01:00 PM 编辑 ]
回复

使用道具 举报

发表于 6-6-2009 02:41 PM | 显示全部楼层
呃,什么年代了还在写console application?学校的功课?那些吃饱等死的老师真的是害人不浅啊,都2009年了,还拿1980年的东西来教学生??肯定是个把C# 当 C/C++ 来教的家伙。。。

现在还有多少人会用 Dos Prompt 来跑 application 啊??
回复

使用道具 举报

 楼主| 发表于 6-6-2009 03:09 PM | 显示全部楼层
就是啊,他们说只能用 console application 来写
老师也是只会讲不会做,有时候还问回我们  
做么example 的 program 走不到
回复

使用道具 举报

发表于 6-6-2009 06:53 PM | 显示全部楼层
我的天啊。。。真同情你。那些老师求学时学的是console application,结果他们一辈子都只知道console application,根本不知道如何写Windows Form Application,就这样一辈子不知道进步,也不会去学新的东西。。。真是一群不知所谓误人子弟的废物啊啊啊啊!!!!

好了,发完牢骚,基于同情你的原因,我只好代你的废物老师教你如何在21世纪写console application 吧。教得不好别怪我,因为这始终不是我的责任。

首先分析你的情况:你要让你的程式能够辨别两种情况:
1)用户输入带有“-”号的身份证号码,这表示你期待的输入有14个字符(12个数字+2个"-"号)

2)用户输入纯数字的输入,这表示你期待的时12个数字。

根据以上的分析,
1)你的输入处理程式最大只能接受14个字符,超过14个就是不符合要求。
2)你的输入处理程式最少要求输入12个字符,少过这个数目就不符合要求。
3)在14个字符的输入情形下,你的第7和第10个字符必须是“-”号。
4)在第3项里面,除了第7和第10字符,其他的字符都必须在0~9之间。
5)在12个字符的情形下,所有的输入必须是介于0~9之间。
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Text;

  4. namespace ConsoleApplication1
  5. {
  6.     class Program
  7.     {
  8.         static void Main(string[] args)
  9.         {
  10.             char[] input = new char[14];
  11.             char ch;

  12.             int index=0, maxLength = 12;
  13.             
  14.             Console.Clear();
  15.             Console.WriteLine("Please Input Something:\n");

  16.             do
  17.             {
  18.                 ch = Console.ReadKey(true).KeyChar;
  19.                 if (ch >= '0' && ch <= '9') //it is a digit
  20.                 {
  21.                     input[index] = ch;
  22.                     index++;
  23.                     Console.Write(ch);
  24.                 }
  25.                 else //not a digit
  26.                 {
  27.                     if (index == 6 || index == 9)
  28.                     {
  29.                         if (ch == '-')
  30.                         {
  31.                             maxLength = 14;
  32.                             input[index] = ch;
  33.                             index++;
  34.                             Console.Write(ch);
  35.                         }
  36.                         else
  37.                         {
  38.                             Console.Beep();
  39.                         }
  40.                     }
  41.                     else //invalid input
  42.                     {
  43.                         Console.Beep();
  44.                     }
  45.                 }
  46.             }while(index < maxLength);

  47.             Console.WriteLine("\n\nPress any key to continue.");
  48.             Console.ReadKey();
  49.         }
  50.     }
  51. }
复制代码
回复

使用道具 举报

 楼主| 发表于 6-6-2009 08:04 PM | 显示全部楼层
谢谢你的教学
我研究研究一下
回复

使用道具 举报

发表于 6-6-2009 10:47 PM | 显示全部楼层
原帖由 geekman 于 6-6-2009 02:41 PM 发表 呃,什么年代了还在写console application?学校的功课?那些吃饱等死的老师真的是害人不浅啊,都2009年了,还拿1980年的东西来教学生??肯定是个把C# 当 C/C++ 来教的家伙。。。现在还有多少人会用 Dos Prompt ...

不赞同你那么说,console application 毕竟是最基本的,并不是所有application 都是windows,很多unix application 都是console, 而且现在windows application 的 IDE 都是drag n drop,学生未必真正了解coding... 纯粹个人看法。。。如不赞同请ignore
回复

使用道具 举报

发表于 7-6-2009 01:51 AM | 显示全部楼层
最簡單就是用regular expression。
回复

使用道具 举报

发表于 25-6-2009 12:29 AM | 显示全部楼层

回复 10# geekman 的帖子

别看不起CONSOLE PROGRAM, 最佳用来做DEBUG 和教学. GIANT 的POS 不是CLIPPER 的CONSOLE APPLICATION 吗. 就算WINFORM APPLICATION, 你真的能理解它怎样操作吗????懂少少就别发表...别误人子弟...
回复

使用道具 举报


ADVERTISEMENT

发表于 25-6-2009 10:46 AM | 显示全部楼层

回复 16# mokth 的帖子

我没看不起Console program,别随便给我扣罪名,同时请仔细的看我写的帖子,以及增加你的理解能力,我看不起的只是那些不求上进,不能够进步的废物讲师。我已经做了7年的Programmer,当然懂winform application。你对我的能力懂多少?你才是懂少少乱发表。

看来你也是那种只懂得Console application的废物讲师的一分子。
回复

使用道具 举报

发表于 26-6-2009 10:30 AM | 显示全部楼层

回复 17# geekman 的帖子

我没看不起你那做了7 年还是Programmer的能力, 只不过不爽你用废物来型容那曾经教过你
回复

使用道具 举报

发表于 26-6-2009 11:07 AM | 显示全部楼层
原帖由 geekman 于 25-6-2009 10:46 AM 发表
我没看不起Console program,别随便给我扣罪名,同时请仔细的看我写的帖子,以及增加你的理解能力,我看不起的只是那些不求上进,不能够进步的废物讲师。我已经做了7年的Programmer,当然懂winform application。你对 ...


这位先生很偾世哦。。。。。
偷偷和你说,我做java的,用eclipse来写coding,写完后是用DOS PROMT来setenv和compile然后再run tomcat的哦,这样我是不是很落后?哈哈。。。

以前我做vb.net的时候,很多时候也没有在property调东西咧,也是用coding控制的。。。哈哈。。。所以你要骂我咯?

还有hor,你写到酱长来控制ic的输入阿?其实用regular expression就好了。。hehe
回复

使用道具 举报

发表于 26-6-2009 11:11 AM | 显示全部楼层
哦。。。原来你在写console application阿?haha........
不好意思,没有看清楚。。。我以为你再button click写这么多来控制。。。哈哈
sorry sorry...
it's my bad
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

 

ADVERTISEMENT



ADVERTISEMENT



ADVERTISEMENT

ADVERTISEMENT


版权所有 © 1996-2026 Cari Internet Sdn Bhd (483575-W)|IPSERVERONE 提供云主机|广告刊登|关于我们|私隐权|免控|投诉|联络|脸书|佳礼资讯网

GMT+8, 28-4-2026 03:12 PM , Processed in 0.089994 second(s), 11 queries , Gzip On, Redis On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表