2010-05-13 49 views
2

我將在DataTable中獲取數據。我將在foreach中迭代數據。我將在Datatable中擁有所有類型的數據。現在我需要爲DataTable中的每個項目(string)找到Double。如何找到IsDouble的字符串?IsDouble檢查Vb.net中的字符串?

例:

我有"21342.2121"字符串。我需要將其轉換爲Double。但有時數據將是"TextString"。所以我不能使用Double.Parse()

如何處理?

回答

1

這是錯誤的方法,您需要先了解數據表中每列的含義。運行這個程序看看有什麼可能出錯的:

Module Module1 
    Sub Main() 
     Dim value As Double 
     If Double.TryParse("1e0", value) Then 
      Console.WriteLine("Uh-oh") 
     End If 
     Console.ReadLine() 
    End Sub 
End Module 
+2

假設「唔哦」表示轉換成功! :-) – Maxime 2012-08-02 20:43:07

+0

以「無限」和超越「NaN」! – 2012-08-02 21:02:13

6

嘗試Double.TryParse。如果該號碼不是有效/可識別的格式,這將返回false,從而允許您在此場景中執行任何您需要的操作。

+0

是的,Double.TryParse應該有助於James123。 – Ram 2010-05-13 14:24:55

5
Dim val as Double 
Double.TryParse("MyString", val) 
Double.TryParse("1234.567", val) 

First TryParse()將返回false。第二個TryParse()將返回true並將1234.567放入val

5

只是對已經提供的(正確的)答案擴大,這裏的Double.TryParse如何使用一個完整的代碼示例:

Dim value As Double 
If Double.TryParse(stringFromDataTable, value) Then 
    ' text has been parsed as value, ' 
    ' so you can use value however you see fit ' 
Else 
    ' text was not a valid double, so you can ' 
    ' notify the user or do whatever you want... ' 
    ' note that value will be zero in this case ' 
End If 
2

請問爲什麼您的存儲兼作字符串和非數字字符串將它們混合值?這似乎是你想避免這樣做的所有成本。

+0

OP可能無法控制數據源。例如,我遇到了這個問題,因爲我正在編寫一些代碼來加載用戶創建的shape文件。我們對允許的數據有限制,但用戶對每列數據類型的要求不太嚴格。出於某種原因,某些用戶使用字符串數據類型而非正確的數據類型生成shapefile更爲簡單。 – jpmc26 2013-10-08 16:27:25