查找字符串中的所有数字

我的应用程序的一部分有一个区域,用户将文本输入到textBox控件中。 他们将在textBox中输入文本和数字。 当用户按下一个按钮时,textBox将其文本输出到一个字符串中,查找字符串中的所有数字,将它们乘以1.14,然后将键入的文本吐出到一个非常小的textBlock中。

基本上,我想要做的是找到字符串中的所有数字 ,将它们乘以1.14,然后将它们插回到字符串中。

起初,我认为这可能是一个简单的问题:只是Bing的标题 ,看看会出现什么。

但经过两页现在紫色的链接后,我开始认为我无法用我自己的,非常吝啬的Regex知识来解决这个问题。

但是,我确实找到了一系列有用的链接:

  • 这篇文章来自DotNetPerls
  • 这个代码片段在Snipplr
  • 这个问题在MSDN上
  • 这个答案在StackOverflow上
  • 本文来自AssociatedContent
  • 这个问题在MSDN上
  • 这篇关于Java2s.com的文章

请注意:这些文章中的一些接近于做我想做的事情,通过从字符串中提取数字,但没有一个找到字符串中的所有数字

示例:用户在textBox中输入以下字符串:“鸡肉,冰淇淋,567,奶酪!还有,140和1337。”

然后该程序将其吐入textBlock:“鸡肉,冰淇淋,646.38,奶酪!还有159.6和1524.18。”

您可以使用与数字匹配的正则表达式,并使用Regex.Replace方法。 我不确定你在术语“数字”中包含了什么,但这将取代所有非负整数,例如42123456

 str = Regex.Replace( str, @"\d+", m => (Double.Parse(m.Groups[0].Value) * 1.14).ToString() ); 

如果你需要一些其他的“数字”定义,例如科学记数法,你需要一个更精细的正则表达式,但原理是相同的。

从这里的样本中自由采用

请注意您的区域选项(因为您正在解析和序列化浮点数)

 using System; using System.Text.RegularExpressions; class MyClass { static void Main(string[] args) { var input = "a 1.4 b 10"; Regex r = new Regex(@"[+-]?\d[\d\.]*"); // can be improved Console.WriteLine(input); Console.WriteLine(r.Replace(input, new MatchEvaluator(ReplaceCC))); } public static string ReplaceCC(Match m) { return (Double.Parse(m.Value) * 1.14).ToString(); } } [mono] ~ @ mono ./t.exe a 1.4 b 10 a 1.596 b 11.4