Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Regular expression to remove any currency symbol from a string?

Tags:

c#

regex

I'm trying to remove any currency symbol from a string value.

using System;
using System.Windows.Forms;
using System.Text.RegularExpressions;

namespace WindowsFormsApplication1
{
    public partial class Form1 : Form
    {
        string pattern = @"(\p{Sc})?";
        public Form1()
        {
            InitializeComponent();
        }

        private void Form1_Load(object sender, EventArgs e)
        {
            decimal x = 60.00M;
            txtPrice.Text = x.ToString("c");
        }

        private void btnPrice_Click(object sender, EventArgs e)
        {
            Regex rgx = new Regex(pattern);
            string x = rgx.Replace(txtPrice.Text, "");
            txtPrice.Text = x;
        }
    }
}
// The example displays the following output:
// txtPrice.Text = "60.00";

This works, but it won't remove currency symbols in Arabic. I don't know why.

The following is a sample Arabic string with a currency symbol.

txtPrice.Text = "ج.م.‏ 60.00";
like image 484
Ramy Said Avatar asked Nov 08 '10 01:11

Ramy Said


1 Answers

Don't match the symbol - make an expression that matches the number.

Try something like this:

 ([\d,.]+)

There are just too many currency symbols to account for. It's better to only capture the data you want. The preceding expression will capture just the numeric data and any place separators.

Use the expression like this:

var regex = new Regex(@"([\d,.]+)");

var match = regex.Match(txtPrice.Text);

if (match.Success)
{
    txtPrice.Text = match.Groups[1].Value;
}
like image 166
Andrew Hare Avatar answered Sep 22 '22 03:09

Andrew Hare