2013-10-09 66 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('.', '') 

如果你堅持使用正則表達式,在期間前放置\。這使得這個時期是一個文字而不是一個正則表達式模式。