作者:孙英鹏 撰写时间:2019年8月17日
今天要讲的是我在做项目的时候无意间想到的无聊东西,就是输入电话号码,然后会把电话号码的所属省份显示出来。关于这个这么做的,我们来看一下。
输入电话到第7的时候,下面的省份输入框会自动出现电话的所属省份。(在网上的电话省份资料是7位的)
效果:
第一步:打开Visual Studio 2015,创建一个窗口页面,在窗口页面里把页面设计好,设计好之后在电话TextBox里面给一个事件和输入数字的限制代码就行了。(在国内我们的电话号码是11位的,所以就要限制输入数字,如果不限制输入数字,那输入进去的电话就不正确了,那么就不符合国内的电话,是属于假电话。)
代码:
<TextBlock Text="本人电话:" Padding="5" Grid.Row="3" Grid.Column="1" HorizontalAlignment="Right" />
<TextBox Grid.Column="2" Grid.Row="3" x:Name="P_Number" Padding="4" TextChanged="P_Number_TextChanged" MaxLength="11"/>
第二步:首先创建一个类用来装电话的所在省份和前7位号码和根据号码获得省份的内容,关于电话的省份和前7位号码是我在网上找来的,所以我也是搬过来用的,你们就上网找代码。现在再来说一下根据前7位号码获得身份证地址,首先是判断一下是否输入到7位号码,然后在获取电话的省份和号码就行了。
代码:
/// <summary>
/// 获取电话省份
/// </summary>
private static void LoadSfzHashTable()
{
_Sfz.Add("1511820", "广东省东莞市");
_Sfz.Add("1511821", "广东省东莞市");
}
/// <summary>
/// 根据号码获得省份
/// </summary>
/// <param name="Numb6">身份证前6位</param>
/// <returns></returns>
public static string LoadAddress(string p_Numb7)
{
if (p_Numb7.Length == 7)
{
if (_Sfz.Count == 0) LoadSfzHashTable();
object _Address = _Sfz[p_Numb7];
if (_Address == null) return "";
return _Address.ToString();
}
return "";
}
第三步:在事件里头编写验证联系电话是否正确的验证代码。首先我们先认识一下我们国内手机号码的规则,如果不认识国内手机号码的规则,是无法编写正确的代码和了解验证国内手机号码规则的知识。(关于这些国内手机号码的规则是老师找来的,我只是借鉴一下老师代码,如果你不喜欢也可以自己上网找。)
首先前3位为网络识别号,第4-7位为地区编码,第8-11位为用户号码,我们来看一下国内三大电话运营商前三位数字是什么?
移动:134 135 136 137 138 139 147 148 150 151 152 157 158 159 172 178 182 183 184 187 188 198。
联通:130 131 132 145 146 155 156 166 171 175 176 185 186
电信:133 149 153 173 174 177 180 181 189 199
虚拟运营商:170
看完之后把所有的电话号码整理一遍,就是为后面所用到的正则表达式所做铺垫。
整理的号码:
130~139、14[5-9]、15[012356789]、166、17[0-8]、18[0-9]、19[8-9]。
整理完之后就开始编写代码。首先写验证电话是否正确,
首先获取控件输入值,长度到达11的时候进行判断,在判断里头写上调用正则表达式验证号码的准确性和使用正则表达式判断是否匹配,不匹配就弹出提示框提示手机号格式不对,请重新输入!并且清空输入框,输入正确就行了,然后在下面再写一个判断,当输入到第七位数字是,如果输错就提示错误,重置输入框,否则就显示电话的所属省份。
代码:
/// <summary>
/// 电话验证
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void P_Number_TextChanged(object sender, TextChangedEventArgs e)
{
try
{
string strDH = P_Number.Text.Trim();
//(1)验证电话准确性
if (strDH.Length == 11)
{
if (!Regex.IsMatch(strDH, @"^0?(13[0-9]|14[5-9]|15[012356789]|166|17[0-8]|18[0-9]|19[89])[0-9]{8}$"))
{
MessageBox.Show("电话不合法!");
P_Number.Text = "";
}
}
else if (P_Number.Text.ToString().Length == 7)
{
string strAddress = CheckIDCardGetDiQu.LoadAddress(P_Number.Text.ToString());
if (strAddress == "")
{
MessageBox.Show("电话不合法!");
//错误时,重置查询框
P_Number.Text = "";
}
else
{
//联系地址
P_SFName.Text = strAddress;
}
}
}
catch (Exception)
{
throw;
}
}