2012-12-12 31 views
1

這可能是一個非常簡單的問題。 假設文本框顯示值爲10,000.12當用戶錯誤地編輯數據時,他刪除了前兩個數字,如000.12,並在計算中使用該文本框,然後它會發出異常。我只需要一個驗證文本框。使用千位分隔符將字符串值轉換爲小數?

例如: string str =「,100.12;」 轉換爲 十進制數= 100.12;

任何想法?

當用戶移除任何千位分隔符時,它只顯示整數。

+0

是分號* *真正的字符串的一部分?有*真的*領先的逗號嗎? –

+0

'decimal n = decimal.Parse(str.Replace(',',''));'不知道你試圖做什麼。 – Leri

+0

我認爲我們需要更好地理解可能的輸入數據。您的示例輸入似乎沒有任何意義。 –

回答

1

這是非常搞砸了,我不知道,如果你的字符串看起來一樣,但如果他們這樣做可能做的伎倆:

string str = ",0,100.12"; 
decimal number; 
bool converted = decimal.TryParse(str.Substring(str.LastIndexOf(",") + 1), out number); 

變量converted會告訴你是否而不是你的字符串被轉換,你不會出現異常。

祝你好運!

1

如果我明白了這個問題,你想刪除所有能夠防止解析例程失敗的字符。

string str = ",0,100.12"; 

var modified = new StringBuilder(); 
foreach (char c in str) 
{ 
    if (Char.IsDigit(c) || c == '.') 
     modified.Append(c); 
} 

decimal number= decimal.Parse(modified.ToString()); 
0
string a = "100.12"; 
decimal b = Convert.ToDecimal(a); 
0
string str = ",0,100.12;"; 
var newstr = Regex.Replace(str,@"[^\d\.]+",""); 
decimal d = decimal.Parse(newstr, CultureInfo.InvariantCulture); 
相關問題