c#判断字符串是否含有数字

iFTIME 2015-07-02 12:22:09
从控制台输入一个字符串,只能是15位或者18位,只有最后一位可以是字母,其他位都是数字,
如何符合就输出YES,否则输出NO。
这是我写的代码:
using System;
class Program
{
static void Main(String[] args)
{
string str = Console.ReadLine();
//write your code

string result = (str);
if (result == "true" && str.Length == 15 && str.Length == 18)
{
Console.WriteLine("YES");
}
else
{
Console.WriteLine("NO");
}

}
public static bool num(string t)
{
int j = t.Length;
for (int k = 0;k<j-1;k++)
{
byte tb = Convert.ToByte(t[k]);
if ((tb < 48) || (tb > 57))
return false;
}
return true;
}
}
...全文
1559 21 打赏 收藏 转发到动态 举报
写回复
用AI写文章
21 条回复
切换为时间正序
请发表友善的回复…
发表回复
Eiceblue 2015-07-10
  • 打赏
  • 举报
回复
正则表达式吧
andy01010101 2015-07-06
  • 打赏
  • 举报
回复
身份证估计有现成的表达式
weixin_29044511 2015-07-06
  • 打赏
  • 举报
回复
正则表达式。
lccheer 2015-07-06
  • 打赏
  • 举报
回复
ASCII码 或者 正直表达式
无涯大者 2015-07-05
  • 打赏
  • 举报
回复
身份证检验,学习下正规表达式应该可以解决问题。
Poopaye 2015-07-02
  • 打赏
  • 举报
回复
  • 打赏
  • 举报
回复
Regex.IsMatch("",@"^\d{15}(\d{2}[0-9a-zA-Z])?$")
更正规的身份证验证规则自己搜索下
全栈极简 2015-07-02
  • 打赏
  • 举报
回复
你需要的是身份证号 正则表达式 验证。 好好学习一下这个,http://www.cnblogs.com/wuhuisheng/archive/2011/03/22/1991543.html
iFTIME 2015-07-02
  • 打赏
  • 举报
回复
using System; class Program { static void Main(String[] args) { string str = Console.ReadLine(); //write your code bool result = num (str); if (result == true && str.Length == 15 && str.Length == 18) { Console.WriteLine("YES"); } else { Console.WriteLine("NO"); } Console.ReadKey (); } public static bool num(string t) { for (int k = 0; k < t.Length - 1; k++) { byte tb = Convert.ToByte(t[k]); if ((tb < 48) || (tb > 57)) return false; } return true; } } 改成这样后 只有NO
dylike 2015-07-02
  • 打赏
  • 举报
回复
public bool HasNumber(string S) { if s like "*[0-9]*" ) { return true; } else { return false; } }
邱_子墨 2015-07-02
  • 打赏
  • 举报
回复
正则表达式可以
fantasykakaxi 2015-07-02
  • 打赏
  • 举报
回复
正则表达式可以解决 我知道asp.net可以用控件处理
於黾 2015-07-02
  • 打赏
  • 举报
回复
其实你应该让用户这样输入参数: >run.exe 1234567 s 前面是数字,加个空格,后面是字母 这样你读取出来就是2个参数,而不是一个参数
Poopaye 2015-07-02
  • 打赏
  • 举报
回复
引用 3 楼 iFTIME 的回复:
”只有最后一位可以是字母“ 这个弄不了
public static bool num(string t)
{
	int last = t.Length - 1;

	for (int k = 0; k < last; k++)
	{
		if (!Char.IsDigit(t[k]))
			return false;
	}

	if (!Char.IsLetterOrDigit(t[last]))
		return false;

	return true;
}
EdsionWang 2015-07-02
  • 打赏
  • 举报
回复
引用 1 楼 starfd 的回复:
Regex.IsMatch("",@"^\d{15}(\d{2}[0-9a-zA-Z])?$")
更正规的身份证验证规则自己搜索下
+1 ,楼主需要的是正则表达式啊
我叫小菜菜 2015-07-02
  • 打赏
  • 举报
回复
很简单啊,既然都存到一个字符串里面了,直接下标访问,对比ASCII码就行了。数字区间是48~57

for(int i=0;i<str.length-1;i++)
{
if(str[i]>47 && str[i]<58) { return true; break;//包含数字}
}




xuzuning 2015-07-02
  • 打赏
  • 举报
回复
补遗 bool result = num(str); //num 方法返回的是 bool 类型数据
xuzuning 2015-07-02
  • 打赏
  • 举报
回复
string result = num(str); //定义了 num 方法总得去调用一下吧 if (result == true && str.Length == 15 && str.Length == 18) //num 方法返回的是 bool 类型,true 不能加引号
於黾 2015-07-02
  • 打赏
  • 举报
回复
既然是控制台,你应该要求用户按顺序输入多个参数,而不是把多个参数都写到一起去
iFTIME 2015-07-02
  • 打赏
  • 举报
回复
”只有最后一位可以是字母“ 这个弄不了

110,500

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧