在VB.NET中使用正则表达式从字符串中解析数字

时间:2010-02-16 14:50:23

标签: .net vb.net regex

我正在尝试解析数字以存储在VB.NET中的字符串变量中(还希望包含小数点)。

以下是一个示例字符串:Refund issued for $27.74

2 个答案:

答案 0 :(得分:2)

正如casperOne已经指出的那样,一个例子不足以提供完整的解决方案。

正则表达式字符串可能看起来像"\\$([0-9]+\\.[0-9]+)""Refund issued for \$(?<Value>[0-9]+\.[0-9]+)"。后者更具限制性。 第二个示例还使用命名组。如果你有一个更复杂的场景,这可以让你在调用Regex.Match后更容易提取匹配。

使用.net风格正则表达式的一个很好的工具是Expresso。

答案 1 :(得分:1)

你真的不需要一个正则表达式,因为对0-9中的每个字符(或对static IsNumber method on the Char structure的调用)的简单迭代和比较都会这样做(对于C#代码,对不起)很容易转换成VB.NET):

static IEnumerable<char> GetNumericCharacters(this string s)
{
     // Check for null.
     if (s == null) throw new ArgumentNullException("s");

     // Iterate through the characters.
     foreach (char c in s)
     {
         // If a number, return it.
         if (char.IsNumber(c)) yield return c;
     }
}

当然,正则表达式同样简单:

[0-9]

您可以使用RegEx类获取该模式的所有匹配项并将它们连接在一起。

每个解决方案失败的唯一时间是在不同的上下文中有多个数字时,例如:

“用户购买10件商品,每件0.99美元”