黑马程序员技术交流社区
标题:
从文本中提取数字!
[打印本页]
作者:
袁振龙
时间:
2013-4-20 16:45
标题:
从文本中提取数字!
本帖最后由 袁振龙 于 2013-4-20 19:05 编辑
这样只能提取出来一个22,后面的数字怎么提取出来。
1.jpg
(22.7 KB, 下载次数: 56)
下载附件
2013-4-20 16:45 上传
作者:
崔宏奎
时间:
2013-4-20 17:30
string str = Substring(x,y);
意思就是从第x元素开始(x从0开始),取y个长度的string.
取出来的是string类型,如果需要计算,还需要转换一下Convert.ToInt32(str);
作者:
陈帅
时间:
2013-4-20 17:36
string str = "大家好,我叫某某,今年22岁,身高178,体重55";
for (int i = 0; i < str.Length; i++)
{
try
{
int n = Convert.ToInt32((str[i]).ToString());
Console.WriteLine(n);
}
catch
{
}
}
Console.ReadKey();
数字都出来了~~ 不过是单个的~~
作者:
林东枫
时间:
2013-4-20 18:26
我觉得 如果 字符串里面的 数字 是知道具体的位置的话,就按照你那种写法,直接把他们获取出来;
如:
string str = "大家好,我是小龙,我22岁了,身高178,体重55公斤!";
string str1 = str.Substring(10,2);
string str2 = str.Substring(17,3);
string str3 = str.Substring(23,2);
复制代码
作者:
陈帅
时间:
2013-4-20 18:33
正则表达式的方法是
string str = "大家好,我叫某某,今年22岁,身高178,体重55";
Regex reg = new Regex(@"\d+");
MatchCollection m = reg.Matches(str,0);
foreach (var item in m)
{
Console.WriteLine(item);
}
Console.ReadKey();
复制代码
作者:
陈帅
时间:
2013-4-20 18:45
当然也可以,直接一个一个截取~
Console.WriteLine(str.Substring(11, 2) + str.Substring(17,3) + str.Substring(23,2));
复制代码
作者:
袁振龙
时间:
2013-4-20 19:04
陈帅 发表于 2013-4-20 18:45
当然也可以,直接一个一个截取~
谢谢了!
作者:
杞文明
时间:
2013-4-20 20:41
类似的字符串操作问题,用
正则表达式
,是做好的选择! 提取用Matches方法就可以搞定了,可以这么做
static void Main(string[] args)
{
//要操作的字符串
string str = "大家好,我是小龙,我22岁了,身高178,体重55公斤!";
//用到的 判别的式子
// \d 表示0-9之间的一个数,+ 表示前面的字符至少出现一次
// \d+ 表示0-9的字符至少是一个
string regex = @"\d+";
//下面这句才是提取,重点是下面这句,其他的都是陪衬而已,
MatchCollection mc = Regex.Matches(str,regex);
//下面的作用是循环遍历输出提取到的数字字符串
foreach (Match item in mc)
{
Console.WriteLine(item);
}
Console.ReadKey();
}
复制代码
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2