咨询区

  • 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 ?相关推荐

  1. python3中format函数 出现keyerror_关于python:string.Formatter抛出KeyError”

    我想像这个问题一样打印出键+值对, key a:         1 key ab:        2 key abc:       3 ^ this colon is what I want 但是我 ...

  2. 挖出一个面试刷题的宝藏资源,赶紧收下了~

    挖出一个面试题宝藏公众号,收集了大量的实用面试题,感觉很有用,这些题目分享给大家,需要的同学可以刷两遍 1-10期 [10期]Redis 面试常见问答 [09期]说说hashCode() 和 equa ...

  3. 挖出api接口的重要性

    作为一名软件开发者,API是我们工作中不可或缺的一部分.无论是将不同系统连接起来,还是构建多组件应用程序,API都是我们的核心工具之一.在本文中,我们将深入讨论API的技术细节和实际应用. 一.首先, ...

  4. 获取线程中抛出的异常信息

    1 ScheduledExecutorService service = Executors.newScheduledThreadPool(10); 2 // 从现在开始delay毫秒之后,每隔一天执 ...

  5. 985高校挖出古墓!网友:毕业论文自己找上门来了

    点击上方"视学算法",选择加"星标"或"置顶" 重磅干货,第一时间送达 本文来源:整理自南方+.中国青年报.华商报.微博等 12月13日,中 ...

  6. 【面试现场】如何在10亿数中找出前1000大的数

    小史是一个应届生,虽然学的是电子专业,但是自己业余时间看了很多互联网与编程方面的书,一心想进BAT互联网公司. 之前小史在BAT三家的面试中已经挂了两家,今天小史去了BAT中的最后一家面试了. 简单的 ...

  7. 如何在10亿个整数中找出前1000个最大的数?

    作者:vincent-duan,专注 Java,沉迷开源,架构师社区合伙人! 面试题目:如何在10亿个整数中找出前1000个最大的数. 我们知道排序算法有很多: 冒泡算法:通过两层for循环,外层第一 ...

  8. 输入一个字符串,用子函数完成在字符串中找出ACSII码值最大的字符,将其放在第一个位置,并将该字符前的所有字符向后顺序移动

    <程序设计基础实训指导教程-c语言> ISBN 978-7-03-032846-5 p143 7.1.2 上级实训内容 [实训内容9]输入一个字符串,用子函数完成在字符串中找出ACSII码 ...

  9. Nchain旗下矿池挖出首个BCH区块,“算力战争”真的要来了?

    本周三,SV矿池挖出了首个BCH区块.该矿池的经营者是区块链公司Nchain和Coingeek,他们表示已经有来自世界各地的数百位矿工选择加入这个矿池. Bitcoin SV迈出了第一步 BCH网络升 ...

最新文章

  1. mysql容器重启数据是否丢失_docker重启后数据是否会丢失
  2. C++ 通讯录设计(六)
  3. oracle怎么不让别的电脑连接,[转载]修改计算机名字导致oracle连接不上的解决方案...
  4. vue字符串转时间_vue总结01
  5. 解决SourceTree不断提示输入密码问题
  6. PDF文件编辑并去除水印
  7. 网络安全工程师面试题合集(不全,暂不整理了)
  8. 传统io和NIO详细比较
  9. 织梦dedecms蓝色商务学院职业技术学校网站模板
  10. python dataframe新增一列
  11. chrome://flags是什么?
  12. crc16-ccitt算法c语言,CRC-CCITT 标准CRC16(1021) 算法校验类
  13. 如何轻松愉快的搞定产品经理面试
  14. 解决TIM版无法修改个人文件夹位置
  15. 电脑上的设备驱动程序是什么(通俗解释)
  16. 股市做短线操作技巧 股市做短线操作技巧
  17. 现代希腊语字母表(待续)
  18. linux CMA总结
  19. 幸存者偏差Survivorship Bias
  20. offset()方法理解

热门文章

  1. 学计算机学体育生闺女,古力:生个女儿一定学围棋 生个儿子就去踢足球
  2. 炼数成金数据分析课程---16、机器学习中的分类算法(交叉内容,后面要重点看)...
  3. 【转载】intellij idea如何将web项目打成war包
  4. 独家 | 蚂蚁金服TRaaS技术风险防控平台解密
  5. 关于内存的划分和传引用传参数的区别
  6. 一款好的折线图、饼图、柱形图
  7. wpf中的datagrid中如何显示图片
  8. android bitmap drawable 互转
  9. Sharepoint学习笔记---如何在Sharepoint2010网站中整合Crystal Report水晶报表(显示数据 二)...
  10. python numpy矩阵索引_python – Numpy中的矩阵索引