asp.net怎么判断一个手机号字符串中包含3个连续的字符或3个相同的字符?
asp.net怎么判断一个手机号字符串中包含3个连续的字符或3个相同的字符?
例如 137333192929 包含3个连续相同的字符:333
例如:137123739399 包含3个连续的子字符串:123
求解释! asp.net 字符串包含问题
[解决办法]
我自己想到了,建立一个list呗,值分别是<{000,111,222,...,999}>
List<string> A=new List<string>();//你的手机号的list
foreach ()
{
A.Add();
}
List<string> B = new List<string>() { "000", "111", "222", "333", "444", "555", "666", "777", "888", "999"};
foreach(string b in B)
{
if(A.Contains(b))
{
//包含在里面
}
else
{
//不包含
}
}
试试吧,我没测试
[解决办法]
正则写死
相同"(000)
[解决办法]
(111)
[解决办法]
(222)..."
连续"(012)
------解决方案--------------------
(123)
[解决办法]
(234)..."
Regex.IsMatch....
[解决办法]
包含三个相同:
Regex r= new Regex(@"(\d)\1{2}");
bool b = r.IsMatch("1393354545");//flase
bool b = r.IsMatch("13933354545");//true
bool flag = CheckNum("137333192929");//true
flag = CheckNum("137123739399");//true
flag = CheckNum("18611770386");//false
private bool CheckNum(string str)
{
if (str.Length < 3)
return false;
else
{
string computeStr=string.Empty;
string compareStr=str.Substring(0,3);
List<int> list = compareStr.Select(x=>int.Parse(x.ToString())).ToList();
if (list.Distinct().Count() == 1)//相同三个数字
{
return true;
}
else
{
computeStr = string.Join("",list.Select(x => --x));
computeStr = Regex.Replace(computeStr, @"(\d)(\d{2})", m =>
{
return m.Groups[2].Value + (int.Parse(m.Groups[1].Value) + 3);
});
if (computeStr.Equals(compareStr))//如果三个数字连续
{
return true;
}
else
{
return CheckNum(str.Substring(1));
}
}
}
}
public static bool check(this string str, int index = 1)
{
if (str.Length < 3
[解决办法]
index==str.Length-1)
return false;
if (str[index - 1] <= str[index] && str[index] <= str[index + 1]&&(2*str[index]==str[index-1]+str[index+1]))
{
if (str[index] - str[index - 1] == 0
[解决办法]
str[index] - str[index - 1]==1)
return true;
}
return str.check(index + 1);
}