我的价值是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(没有“,”,“/”,“ - ”和“”)。
答案 0 :(得分:3)
没有正则表达式怎么样?
var s = "4,59,999/-";
var array = s.Where(c => char.IsDigit(c)).ToArray();
或更短
var array = s.Where(char.IsDigit).ToArray();
您可以在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);
?>