簡體   English   中英

Double.Parse對於“ 10.00”檢索值失敗

[英]Double.Parse fails for “10.00” retrieved value

屏幕截圖總結了問題:

在此處輸入圖片說明

我無法控制檢索到的值。 它帶有一些我無法弄清楚的時髦格式,即使看起來很正常,解析也失敗了。 手動輸入值就可以了。

如何“標准化”檢索到的值,以使Decimal.Parse不會失敗?

作為參考,以下是失敗的字符串(已復制和粘貼):

“ 10.00”

首先,我將檢查您的區域設置以消除任何與期望的十進制分隔符之間的差異一樣簡單的事情。

如果那用空格隔開,則如果字符串10.00成功解析,則看起來10.00但未能解析的字符串實際上不能為 10.00

檢查並確定字符串的每個字符的字符代碼,並確認它確實是10.00而不是外觀相同但實際上不同的某種奇特的Unicode(它可能還包括在顯示時甚至不可見的字符)。

您可能在要檢索的字符串中隱藏了某種特殊字符。

嘗試這個:

Double.Parse(Regex.Replace(decimalValue, @"[^0-9.,]+", ""))

您可能需要為System.Text.RegularExpressions添加using語句

我只替換一個有問題的字符,這是最安全的選擇:

s = s.Replace("\u200E", "");

正如Jeroen Mostert在評論中提到的那樣,您的decimalValue有一個非打印字符。

這是一個類似的問題,應該可以幫助您解決這個問題。

https://stackoverflow.com/a/15259355/7636764

編輯:

使用string output = new string(input.Where(c => char.IsLetter(c) || char.IsDigit(c)).ToArray()); 解決方案的一部分,但也包含在|| char.IsPunctuation(c) IsDigit之后的|| char.IsPunctuation(c)將獲得您想要的結果。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM