上周六笔试的时候,有这么一道题目:
有一个共有10个15位身份证号码字符串组成的数组,现输入一个字符串,格式为"430124??090?174",其中?可随意在字符串中出现,可匹配0-9的任意数字,要求从数组中找出与之匹配的,然后输入来。
当时脑子一片混乱,竟然就想用正则表达式来做,而正则表达式在vb中又不会用,想来想去也只能用JavaScript来写了。记得代码如下:
那天,刘公说其实这个能用特别简单的方式实现的,不过能懂得利用系统提供的一些功能来实现,也非常不错。
这几天使劲学习C#,终于能用C#写出更加简单的算法了:
本来准备把这个小东西再传给那个单位,让他们见识我的学习能力,不过现在不用了,已经收到他们的聘用电话了。^_^!
有一个共有10个15位身份证号码字符串组成的数组,现输入一个字符串,格式为"430124??090?174",其中?可随意在字符串中出现,可匹配0-9的任意数字,要求从数组中找出与之匹配的,然后输入来。
当时脑子一片混乱,竟然就想用正则表达式来做,而正则表达式在vb中又不会用,想来想去也只能用JavaScript来写了。记得代码如下:
1
function matchedIDCard(str){
2
var matchArr=new Array();
3
var re=eval("/" + str.replace(/\?/g,"[0-9]") + "/");
4
for(var i=0;i<arr.length;i++) //arr即为身份证号码的数组
5
if(re.test(arr[i])matchArr.push(arr[i]);
6
return matchArr;
7
}
function matchedIDCard(str){2
var matchArr=new Array();3
var re=eval("/" + str.replace(/\?/g,"[0-9]") + "/");4
for(var i=0;i<arr.length;i++) //arr即为身份证号码的数组5
if(re.test(arr[i])matchArr.push(arr[i]);6
return matchArr;7
}那天,刘公说其实这个能用特别简单的方式实现的,不过能懂得利用系统提供的一些功能来实现,也非常不错。
这几天使劲学习C#,终于能用C#写出更加简单的算法了:
1
using System;
2
3
class IDCard
4
{
5
public static int Main()
6
{
7
string[] IDCardNumber=new string[10];
8
IDCardNumber[0]="430124198204241714";
9
IDCardNumber[1]="430124198209181714";
10
IDCardNumber[2]="124124198202121714";
11
IDCardNumber[3]="254124198202231714";
12
IDCardNumber[4]="456124198205341714";
13
IDCardNumber[5]="831124198202241714";
14
IDCardNumber[6]="102124198205081714";
15
IDCardNumber[7]="410124198211031714";
16
IDCardNumber[8]="230124198212281714";
17
IDCardNumber[9]="120124198204081714";
18
19
Console.WriteLine("请输入需要查询的身份证号码(输入“end”结束查询):");
20
string ID=Console.ReadLine();
21
while(ID.ToLower()!="end")
22
{
23
Console.WriteLine("与之匹配的身份证号码如下:");
24
for(int i=0;i<IDCardNumber.Length;i++)
25
{
26
int j=0;
27
while(j<IDCardNumber[i].Length && (ID[j]==IDCardNumber[i][j] || ID[j]=='?')) j++;
28
if(j==IDCardNumber[i].Length)Console.WriteLine(IDCardNumber[i]);
29
}
30
Console.WriteLine("\n请输入需要查询的身份证号码(输入“end”结束查询):");
31
ID=Console.ReadLine();
32
}
33
return 0;
34
35
}
36
}
37
38
上面的身份证号码是18位的,不过整体算法的确挺简单的。
using System;2

3
class IDCard4
{5
public static int Main()6
{7
string[] IDCardNumber=new string[10];8
IDCardNumber[0]="430124198204241714";9
IDCardNumber[1]="430124198209181714";10
IDCardNumber[2]="124124198202121714";11
IDCardNumber[3]="254124198202231714";12
IDCardNumber[4]="456124198205341714";13
IDCardNumber[5]="831124198202241714";14
IDCardNumber[6]="102124198205081714";15
IDCardNumber[7]="410124198211031714";16
IDCardNumber[8]="230124198212281714";17
IDCardNumber[9]="120124198204081714";18

19
Console.WriteLine("请输入需要查询的身份证号码(输入“end”结束查询):");20
string ID=Console.ReadLine();21
while(ID.ToLower()!="end")22
{23
Console.WriteLine("与之匹配的身份证号码如下:");24
for(int i=0;i<IDCardNumber.Length;i++)25
{26
int j=0;27
while(j<IDCardNumber[i].Length && (ID[j]==IDCardNumber[i][j] || ID[j]=='?')) j++;28
if(j==IDCardNumber[i].Length)Console.WriteLine(IDCardNumber[i]);29
}30
Console.WriteLine("\n请输入需要查询的身份证号码(输入“end”结束查询):");31
ID=Console.ReadLine();32
}33
return 0;34
35
}36
}37

38

本来准备把这个小东西再传给那个单位,让他们见识我的学习能力,不过现在不用了,已经收到他们的聘用电话了。^_^!


浙公网安备 33010602011771号