如何使用正则表达式从数值中删除字符

时间:2015-06-18 09:13:38

标签: c# regex

我的价值是4,59,999 / - 。我的代码是

if (Regex.IsMatch(s,@"\b[1-9]\d*(?:,[0-9]+)*/?-?"))
{
    string value = Regex.Replace(s, @"[^\d]", " ");
    textBox2.Text= value;
} 

输出为:4 59 999,我需要它为459999(没有“,”,“/”,“ - ”和“”)。

8 个答案:

答案 0 :(得分:3)

没有正则表达式怎么样?

var s = "4,59,999/-";
var array = s.Where(c => char.IsDigit(c)).ToArray(); 

或更短

var array = s.Where(char.IsDigit).ToArray(); 

enter image description here

您可以在string(Char[]) constructor中使用此数组。

var result = new string(array); // 459999

答案 1 :(得分:2)

您不需要正则表达式,您可以使用:

 textBox2.Text = String.Concat(s.Where(Char.IsDigit));

更好的方法是使用decimal.Parse / TryParse

string s = "4,59,999/-.";
decimal price;
if (decimal.TryParse(s.Split('/')[0], NumberStyles.Currency, NumberFormatInfo.InvariantInfo, out price))
    textBox2.Text = price.ToString("G");

答案 2 :(得分:1)

只需用空字符串替换。

string value = Regex.Replace(s, @"[^\d]", ""); // See the change in the replace string.
textBox2.Text= value;

注意您不需要if,因为仅当非数字匹配([^\d]

时,正则结果替换才有效

答案 3 :(得分:1)

您正在用空格替换“,”,“/”,“ - ”和“”。试试这个:

string value = Regex.Replace(s, @"[^\d]", "");

希望这有帮助。

答案 4 :(得分:1)

应该只是用空字符串而不是空格替换它吗?

Regex.Replace(s, @"[^\d]", String.Empty);

答案 5 :(得分:1)

目前,您正在用空格替换这些字符。改为使用一组空引号。

if (Regex.IsMatch(s,@"\b[1-9]\d*(?:,[0-9]+)*/?-?"))
{
    string value = Regex.Replace(s, @"[^\d]", "");
    textBox2.Text= value;
} 

答案 6 :(得分:1)

Linq是一个可能的解决方案:

  String s = "4,59,999/-";
  ...
  textBox2.Text = new String(s.Where(item => item >= '0' && item <= '9').ToArray());

答案 7 :(得分:0)

尝试这样的东西,它将在PHP中100%工作,所以只需更改C#

的一些语法
<?php
    $str = "4,59,999/-.";
    echo $str = preg_replace('/[^a-z0-9]/', '', $str);
?>