NET问答: 如何从 string 中挖出所有的 number ?
咨询区
van:
我现在有一个需求,想从 string 中找到所有的 number 并提取出来。
举例如下:
string test = "1 hello"
string test1 = " 1 world"
string test2 = "helloworld 99"
请问我该如何做?
回答区
Tabares:
这个简单,可以用正则表达式 Regex.Split
提取所有的 number,使用下面的代码。
public class Program{static void Main(string[] args){string input = "There are 4 numbers in this string: 40, 30, and 10.";// Split on one or more non-digit characters.string[] numbers = Regex.Split(input, @"\D+");foreach (string value in numbers){if (!string.IsNullOrEmpty(value)){int i = int.Parse(value);Console.WriteLine("Number: {0}", i);}}}}
Ramireddy Ambati:
可以试着用 Regex.Matches
提取。
static void Main(string[] args){string input = "Hello 20, I am 30 and he is 40";var numbers = Regex.Matches(input, @"\d+").OfType<Match>().Select(m => int.Parse(m.Value)).ToArray();foreach (var item in numbers){Console.WriteLine($"number: {item}");}}
Thomas C. G. de Vilhena:
我写了一个扩展方法可以提取出 string 中所有的正整数,方法如下:
public static class StringExt{public static List<long> Numbers(this string str){var nums = new List<long>();var start = -1;for (int i = 0; i < str.Length; i++){if (start < 0 && Char.IsDigit(str[i])){start = i;}else if (start >= 0 && !Char.IsDigit(str[i])){nums.Add(long.Parse(str.Substring(start, i - start)));start = -1;}}if (start >= 0)nums.Add(long.Parse(str.Substring(start, str.Length - start)));return nums;}}
然后像下面这样调用
public static void Main(string[] args){var input = "I was born in 1989, 27 years ago from now (2016)";foreach (var item in input.Numbers()){Console.WriteLine($"number: {item}");}}
点评区
从解答中再次看到了 正则
的强大威力,不得不服,不过这种需求可以简单,也可以特别复杂,比如考虑下面的情况:
小数 eg: 200.002,100.01
负数 eg: -20.02,-10.0
当然都可以用相对复杂的正则写出来,但现实中不得不考虑这些情况哈????????????
原文链接:https://stackoverflow.com/questions/4734116/find-and-extract-a-number-from-a-string
NET问答: 如何从 string 中挖出所有的 number ?相关推荐
- python3中format函数 出现keyerror_关于python:string.Formatter抛出KeyError”
我想像这个问题一样打印出键+值对, key a: 1 key ab: 2 key abc: 3 ^ this colon is what I want 但是我 ...
- 挖出一个面试刷题的宝藏资源,赶紧收下了~
挖出一个面试题宝藏公众号,收集了大量的实用面试题,感觉很有用,这些题目分享给大家,需要的同学可以刷两遍 1-10期 [10期]Redis 面试常见问答 [09期]说说hashCode() 和 equa ...
- 挖出api接口的重要性
作为一名软件开发者,API是我们工作中不可或缺的一部分.无论是将不同系统连接起来,还是构建多组件应用程序,API都是我们的核心工具之一.在本文中,我们将深入讨论API的技术细节和实际应用. 一.首先, ...
- 获取线程中抛出的异常信息
1 ScheduledExecutorService service = Executors.newScheduledThreadPool(10); 2 // 从现在开始delay毫秒之后,每隔一天执 ...
- 985高校挖出古墓!网友:毕业论文自己找上门来了
点击上方"视学算法",选择加"星标"或"置顶" 重磅干货,第一时间送达 本文来源:整理自南方+.中国青年报.华商报.微博等 12月13日,中 ...
- 【面试现场】如何在10亿数中找出前1000大的数
小史是一个应届生,虽然学的是电子专业,但是自己业余时间看了很多互联网与编程方面的书,一心想进BAT互联网公司. 之前小史在BAT三家的面试中已经挂了两家,今天小史去了BAT中的最后一家面试了. 简单的 ...
- 如何在10亿个整数中找出前1000个最大的数?
作者:vincent-duan,专注 Java,沉迷开源,架构师社区合伙人! 面试题目:如何在10亿个整数中找出前1000个最大的数. 我们知道排序算法有很多: 冒泡算法:通过两层for循环,外层第一 ...
- 输入一个字符串,用子函数完成在字符串中找出ACSII码值最大的字符,将其放在第一个位置,并将该字符前的所有字符向后顺序移动
<程序设计基础实训指导教程-c语言> ISBN 978-7-03-032846-5 p143 7.1.2 上级实训内容 [实训内容9]输入一个字符串,用子函数完成在字符串中找出ACSII码 ...
- Nchain旗下矿池挖出首个BCH区块,“算力战争”真的要来了?
本周三,SV矿池挖出了首个BCH区块.该矿池的经营者是区块链公司Nchain和Coingeek,他们表示已经有来自世界各地的数百位矿工选择加入这个矿池. Bitcoin SV迈出了第一步 BCH网络升 ...
最新文章
- mysql容器重启数据是否丢失_docker重启后数据是否会丢失
- C++ 通讯录设计(六)
- oracle怎么不让别的电脑连接,[转载]修改计算机名字导致oracle连接不上的解决方案...
- vue字符串转时间_vue总结01
- 解决SourceTree不断提示输入密码问题
- PDF文件编辑并去除水印
- 网络安全工程师面试题合集(不全,暂不整理了)
- 传统io和NIO详细比较
- 织梦dedecms蓝色商务学院职业技术学校网站模板
- python dataframe新增一列
- chrome://flags是什么?
- crc16-ccitt算法c语言,CRC-CCITT 标准CRC16(1021) 算法校验类
- 如何轻松愉快的搞定产品经理面试
- 解决TIM版无法修改个人文件夹位置
- 电脑上的设备驱动程序是什么(通俗解释)
- 股市做短线操作技巧 股市做短线操作技巧
- 现代希腊语字母表(待续)
- linux CMA总结
- 幸存者偏差Survivorship Bias
- offset()方法理解
热门文章
- 学计算机学体育生闺女,古力:生个女儿一定学围棋 生个儿子就去踢足球
- 炼数成金数据分析课程---16、机器学习中的分类算法(交叉内容,后面要重点看)...
- 【转载】intellij idea如何将web项目打成war包
- 独家 | 蚂蚁金服TRaaS技术风险防控平台解密
- 关于内存的划分和传引用传参数的区别
- 一款好的折线图、饼图、柱形图
- wpf中的datagrid中如何显示图片
- android bitmap drawable 互转
- Sharepoint学习笔记---如何在Sharepoint2010网站中整合Crystal Report水晶报表(显示数据 二)...
- python numpy矩阵索引_python – Numpy中的矩阵索引