2013-10-09 31 views
0

嗨我有一个正则表达式,它需要一个数字并从中删除所有的逗号和其他字符。从数字中删除期

 num = num.toString().replace(/\$|\,/g, ''); 

我需要添加到这个正则表达式,所以它也删除了它的点。例如23.00它应该只返回23。我试过这个(“//.",/\$|\,/g,”),但是效果不好。

请让我知道如何解决它。 感谢

+3

如果是23.5,它应该返回235还是23? –

+0

是不是有一个原因,在将它变成一个字符串之前,通过四舍五入或截断它而不改变数字? –

+0

而像“123.345,56”应该变成?????调用没有文化信息的'ToString'可能会让你陷入困境...... –

回答

1

匹配点(这是一个pecial字符)用一个反斜杠逃脱它..尝试类似:

num = num.toString().replace(/\$\.|\,/g, ''); 

UPDATE

根据你最后的评论你不想在期后的文字.. 如果它真的是一个号码Math.Floor(num).ToString()应该做的工作。

如果它没有成为一个号码,你仍想使用正则表达式:

num = num.toString().replace(/\..*/, ''); 

如果你不确认正则表达式:

num = int.Parse(num.ToString().Split('.')[0]); // In case num is a number, otherwise, int.Parse and ToString are not needed 
1

为什么不这样做,并避免正则表达式? num.Floor().ToString()

1

MSDN它看起来像.ToString("F0", CultureInfo.InvariantCulture)将采取双重像18934.1879输出18934.

1

你甚至都不需要正则表达式:

string num = myNumber.ToString().Replace("$","").Replace(".","").Replace(",",""); 

这是假设你想一个数字,如“123.45” 是 “12345”,而不是 “123”

如果你想 “123.45” 是 “123”,而不是使用:

string num = String.Format("{0:#.##}", myNumber).Replace(",",""); 
0
num = num.replace('.', '') 

如果你坚持使用正则表达式,在期间前放置\。这使得这个时期是一个文字而不是一个正则表达式模式。