我試圖在vb.net中把字串決議為小數,其中可能包含點或逗號,例如。'5000.00', '5000,00'(實際上是指比利時和尼德蘭)。 帶點的小數的代碼:
Decimal.TryParse(amountStr, amountVal)
帶逗號的十進制代碼:
Decimal.TryParse(amountStr, NumberStyles.AllowDecimalPoint, CultureInfo.CreateSpecificCulture("nl-BE"), amountVal)
是否有可能將這些合并成一個代碼而不替換字串中的逗號?
uj5u.com熱心網友回復:
是否有可能將這些組合成一個代碼而不替換字串中的逗號?
字串替換是這個問題的 "通常 "解決方案。一個稍微優雅的替代方案是檢查字串是否包含.或,,然后向 TryParse 提供 "正確的 "CultureInfo:
Dim isBelgianFormat As Boolean = amountStr. 包含(",")
Dim ci As CultureInfo = If(isBelgianFormat,
CultureInfo.GetCultureInfo("nl-BE")。
CultureInfo.InvariantCulture)
...Decimal.TryParse(amountStr, NumberStyles.AllowDecimalPoint, ci, amountVal) ...
這也將允許你通過用更復雜的演算法替換第一行來 "微調 "你的猜測邏輯。(例如,如果你的用戶使用了千位數的分隔符,這個 "簡單 "的解決方案就會失敗,也就是說,如果你想正確地 "猜測"500.000,00和500,000.00的值。)
盡管如此,你還是可以用這個方法來 "猜測"。
話雖如此,你可以使你的代碼更加復雜,以涵蓋這些情況,但你想如何處理,例如,500.000或500,000?是50萬還是500?
因此,我敦促您重新考慮您的要求。特別是在決議貨幣價值時,失敗并提供有用的錯誤資訊往往比猜測用戶可能的意思更可取。
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/308294.html
標籤:
下一篇:如何添加檔案創建日期過濾器?
