开发者

Removing invalid characters from price

I have a scenario where I have to remove certain characters from a price string using C#.

I'm looking for a regular expression to remove these characters or something better than that.

For example, if the price string is

"3,950,000 ( Ex开发者_如何转开发. TAX )"

I want to remove "( Ex. TAX )" from the string.

Basically I have to remove the any character from string except numbers, dot and comma.


Regular expressions are always tricky to get right, since the input can vary so greatly, but I think this one covers your needs:

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

Explained:

(         - 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


Why use a RegEx when a simple replace will do?

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


try this

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


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


You can use following regular expression

Case 1: if ( Ex.TAX ) is constant, you can just remove the text using string function String.Replace.

Case 2: if you require number which contains only , following is the regex you can use to extract the same

[0-9,]{1,}

Case 3: if ( is there always there after number, the following regex can be used

\d.*(?=\()

following is c# code for regex

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);


 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);

Output:

  • 3,950,000
  • 3,950,000,000
  • 3,950,000,000
  • 3,950,000,000,000,000.00


To find "( Ex. TAX )" try this regex:

/\( Ex\. TAX \)/i
0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜