亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如下,想要返回true表示這個QQ號碼是特殊號碼,反之則為普通號碼?怎么解決?

如下,想要返回true表示這個QQ號碼是特殊號碼,反之則為普通號碼?怎么解決?

皈依舞 2022-05-07 13:10:08
一長串數字字符串大概有6到8位,判斷是否符合下列規則:AAAA類型,比如1111,111125等ABCD類型,比如1234,12345等DCBA類型,比如4321,54321等ABAB類型,比如1212,121212等AABB類型,比如1122,111222等寫一個正則表達式或方法,輸入參數是一個6-8位的數字字符串,如同QQ號碼,然后要判斷這個QQ號碼只要符合上面5項類型中的任何一項,就返回true表示這個QQ號碼是特殊號碼,不然就返回false表示這個QQ號碼是普通號碼我知道大家的意思了,可是我還是寫不出方法來,拜托了:public bool checkNumber(string str){switch (str)case “符合第一種類型”:break;case “符合第二種類型”:break;case “符合第三種類型”:break;case “符合第四種類型”:break;case “符合第五種類型”:break;default:break:}是C#的,求方法!
查看完整描述

4 回答

?
翻過高山走不出你

TA貢獻1875條經驗 獲得超3個贊

using System;
using System.Text.RegularExpressions;
using System.Windows.Forms;

namespace MatchNumDemo
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}

private void button1_Click(object sender, EventArgs e)
{
string num = this.textBox1.Text;

if (IsNumericAndCkLength(num))
{
if (IsAAAA(num) || IsABCD(num) || IsABAB(num) || IsABAB(num))
{
this.label1.Text = "IsMatch!";
}
else
{
this.label1.Text = "NotMatch!";
}
}
else
{
this.label1.Text = "NotMatch!";
}
}

/// <summary>
/// 由數字組成且長度在[6,8]之間
/// </summary>
/// <param name="num"></param>
/// <returns></returns>
private bool IsNumericAndCkLength(string num)
{
if (string.IsNullOrEmpty(num) || num.Length <= 5 || num.Length >= 9)
{
return false;
}
int numInt;
if (int.TryParse(num, out numInt))
{
return true;
}
else
{
return false;
}
}

//2222
private bool IsAAAA(string num)
{
return Regex.IsMatch(num, @"\d*(\d)\1{3}\d*", RegexOptions.IgnorePatternWhitespace);
}

//2345
private bool IsABCD(string num)
{
bool isAbcd = false;
for (int i = 0; i < num.Length - 4; i++)
{
if (chABCD(num, i))
{
isAbcd = true;
break;
}
}
return isAbcd;
}
private bool chABCD(string num, int idx)
{
int ck = 1;
for (int i = idx; i < num.Length - 1; i++)
{
if (int.Parse(num[i].ToString()) + 1 == int.Parse(num[i + 1].ToString()))
{
ck++;
continue;
}
else
{
break;
}
}
return ck >= 4;
}

//5432
private bool IsDCBA(string num)
{
bool isDcba = false;
for (int i = 0; i < num.Length - 4; i++)
{
if (chDCBA(num, i))
{
isDcba = true;
break;
}
}
return isDcba;
}
private bool chDCBA(string num, int idx)
{
int ck = 1;
for (int i = idx; i < num.Length - 1; i++)
{
if (int.Parse(num[i].ToString()) - 1 == int.Parse(num[i + 1].ToString()))
{
ck++;
continue;
}
else
{
break;
}
}
return ck >= 4;
}

//2626
private bool IsACAC(string num)
{
return Regex.IsMatch(num, @"\d*(\d{2,})\1\d*", RegexOptions.IgnorePatternWhitespace);
}

//2323
private bool IsABAB(string num)
{
bool isAbab = false;
string pattern = @"\d*(\d{2,})\1\d*";
Match m = Regex.Match(num, pattern, RegexOptions.IgnorePatternWhitespace);
if (m.Groups.Count > 0)
{
string matchstr = m.Groups[1].Value;
bool isAb = true;
for (int i = 0; i < matchstr.Length - 1; i++)
{
if (int.Parse(matchstr[i].ToString()) + 1 == int.Parse(matchstr[i + 1].ToString()))
{
continue;
}
else
{
isAb = false;
break;
}
}
isAbab = isAb;
}
return isAbab;
}

//3377
private bool IsAACC(string num)
{
return Regex.IsMatch(num, @"\d*(\d)\1(\d)\2\d*", RegexOptions.IgnorePatternWhitespace);
}

//2233
private bool IsAABB(string num)
{
bool isAabb = false;
string pattern = @"\d*(\d)\1(\d)\2\d*";
Match m = Regex.Match(num, pattern, RegexOptions.IgnorePatternWhitespace);
if (m.Groups.Count >= 1)
{
if (int.Parse(m.Groups[1].Value) + 1 == int.Parse(m.Groups[2].Value))
{
isAabb = true;
}
}
return isAabb;
}

//
}
}



查看完整回答
反對 回復 2022-05-10
?
瀟瀟雨雨

TA貢獻1833條經驗 獲得超4個贊

單獨使用正則無法實現,必須結合程序。
正則可以解決像AAAA,ABAB,AABB這種,
比如用(\d)\1{3,7}就可以捕獲有連續4位以上同一數字的號碼,
但是對于要判斷大小的情況就束手無策了。

查看完整回答
反對 回復 2022-05-10
?
函數式編程

TA貢獻1807條經驗 獲得超9個贊

用極其肯定的語氣告訴你,正則做不到.
請直接寫程序實現.
很容易寫.
用charAt(0)實現, 比如第一種AAAA
if (s.charAt(0) == s.charAt(1) && s.charAt(0) == s.charAt(2)...){
}
不能用swich 做, 直接用if , 用swich 的話,還得再寫個函數返回case.

查看完整回答
反對 回復 2022-05-10
?
泛舟湖上清波郎朗

TA貢獻1818條經驗 獲得超3個贊

\d{4} #AAAA類型
(?:1234|2345|3456|4567|5678|6789) #ABCD類型
(?:4321|5432|6543|7654|8765|9876) #DCBA類型
(?:12|23|34|45|56|67|78|89){2} #ABAB類型
(?:1122|2233|3344|4455|5566|6677|7788|8899) #AABB類型
反正你就是數字判斷,這樣寫的正則就夠了

查看完整回答
反對 回復 2022-05-10
  • 4 回答
  • 0 關注
  • 245 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號