2011-07-05 264 views
2

的第一次出現,我有一些形式中,用戶會輸入一些數字,我想,以防止它們在此字符串輸入多個逗號正則表達式只允許字符

我做了這樣的事情

var input = "1,,,,2"; 
var value = Regex.Replace(input, ",{1,}", "."); 

這將輸出1.2,這是正確的。但是,如果我進入

var input = 1,,,2,3,,,4,5,,6 

都失敗

什麼ID喜歡做的事就是形成輸入的最後一個版本1.23456

有什麼建議?

由於

+0

你能調用替換()兩次,一次更換第一個逗號,並再次刪除其餘的逗號? –

+2

你爲什麼用句點替換逗號? (我在問,因爲我希望你不要將像3995000,43這樣的瑞典格式的數字轉換爲美國格式的3,995,000.43,所以你可以使用'decimal.Parse',而不是使用'decimal.Parse'與瑞典文化信息。) – dtb

+0

即時通訊替換句點,以便能夠進行計算,它與數字格式無關! :) –

回答

2
Regex.Replace (input, @"(?<=^\d+),", ".").Replace (",", ""); 

這種具有.週期替換第一個,逗號,然後用empty替換剩餘的逗號。

1

使用這個表達式:(?<!,[^,]*?),+

var res = Regex.Replace(input, @"(?<!,[^,]*?),+", ".").Replace(",", string.Empty); 

或者驗證碼:

var res = Regex.Replace(input, @"(?<!,[^,]*?)(,+)|(,+)", 
    m => m.Groups[1].Success ? "." : string.Empty); 

輸出:1.23456

+0

這隻適用於fint,但agent-j的方法稍微簡單一些 –

相關問題