C#程序目的:从一堆字符串中提取电话号码、手机号码,要求字符串中的号码以非数字字符分割。原理:利用正则表达式提取纯数字字符串数组,然后利用长度等号码特征,筛选过滤。
代码:
//思路仅供参考
//nums为输入字符串;isMobile为是否判断为手机号码
public static string TelNumFilter(string nums, bool isMobile)
{
nums = Regex.Replace(nums, "[^0-9]+", ",");
StringBuilder rsSb = new StringBuilder(",");
string[] numAry = nums.Split(new char[] { ',' }, StringSplitOptions.RemoveEmptyEntries);
for (int i = 0; i < numAry.Length; i++)
{
if (numAry[i].Length < 5)
continue;
if (isMobile)
{
while (numAry[i].StartsWith("0"))
numAry[i] = numAry[i].Substring(1);
if (numAry[i].Length == 11 && int.Parse(numAry[i].Substring(0, 2)) > 10 && int.Parse(numAry[i].Substring(0, 2)) < 20 && rsSb.ToString().IndexOf("," + numAry[i] + ",") < 0)
rsSb.Append(numAry[i]).Append(",");
}
else if (rsSb.ToString().IndexOf("," + numAry[i] + ",") < 0)
rsSb.Append(numAry[i]).Append(",");
}
return rsSb.ToString().Trim(',');
}