从价格中删除无效字符

时间:2010-12-03 12:22:32

标签: c# asp.net regex

我有一个场景,我必须使用C#从价格字符串中删除某些字符。

我正在寻找一个正则表达式来删除这些字符或更好的东西。

例如,如果价格字符串是

"3,950,000 ( Ex. TAX )"

我想从字符串中删除"( Ex. TAX )"

基本上我必须删除除数字,点和逗号之外的字符串中的任何字符。

7 个答案:

答案 0 :(得分:3)

正则表达式总是很难做到正确,因为输入可能变化很大,但我认为这个可以满足您的需求:

string pattern = @"([\d]+[,.]{0,1})+";
string cleanedPrice = Regex.Match(price, pattern).Value;

说明:

(         - start matching group
[\d]+     - match any decimal digit, at least once
[,.]{0,1} - ...followed by 0 or 1 comma or dot
)         - end of group
+         - repeat at least once

答案 1 :(得分:1)

为什么在简单替换时会使用RegEx?

string clean = "3,950,000 ( Ex. TAX )".Replace(" ( Ex. TAX )", string.Empty);

答案 2 :(得分:1)

试试这个

myPrice.Replace(" ( Ex. TAX ),"")

答案 3 :(得分:1)

String price = "3,950,000 ( Ex. TAX)".Replace(" ( Ex. TAX)","");

答案 4 :(得分:1)

您可以使用以下正则表达式

案例1:if(Ex.TAX)是常量,您可以使用字符串函数String.Replace删除文本。

案例2:如果您需要仅包含的数字,以下是您可以用来提取相同的正则表达式

  

[0-9,{1,}

案例3:if(总是在数字之后,可以使用以下正则表达式

  

\ d *(?= \()

以下是正则表达式的c#代码

public static Regex regex = new Regex(
      "\\d.*(?=\\() ",
    RegexOptions.IgnoreCase
    | RegexOptions.CultureInvariant
    | RegexOptions.IgnorePatternWhitespace
    | RegexOptions.Compiled
    );
//// Capture the first Match, if any, in the InputText
// Match m = regex.Match(InputText);

答案 5 :(得分:0)

要找到“(例如TAX)”试试这个正则表达式:

/\( Ex\. TAX \)/i

答案 6 :(得分:0)

 Regex rex = new Regex(@"(?:(?:\d{1,2},)?(?:\d{3},)*(?:\d{3})(?:\.\d+){0,})|(\d+)");

 Console.WriteLine(rex.Match("3,950,000 ( Ex. TAX )").Groups[0].Captures[0].Value);
 Console.WriteLine(rex.Match("3,950,000,000").Groups[0].Captures[0].Value);
 Console.WriteLine(rex.Match("3,950,000,000UHFWF#FWHFWEFE").Groups[0].Captures[0].Value);
 Console.WriteLine(rex.Match("3,950,000,000,000,000.00").Groups[0].Captures[0].Value);

输出:

  • 3950000
  • 3,950,000,000
  • 39.5亿
  • 3,950,000,000,000,000.00