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";
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;
}
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With