Двойная проверка строки в Vb.net? - PullRequest
2 голосов
/ 13 мая 2010

Я получу данные в DataTable.Я собираюсь повторить данные в foreach.У меня будут все типы данных в Datatable.Теперь мне нужно найти Double для каждого элемента (string) в DataTable.Как найти IsDouble для строки?

Пример:

У меня есть "21342.2121" строка.Мне нужно преобразовать это в Double.Но иногда данные будут "TextString".Поэтому я не могу использовать Double.Parse().

Как с этим справиться?

Ответы [ 5 ]

7 голосов
/ 13 мая 2010
Dim val as Double
Double.TryParse("MyString", val)
Double.TryParse("1234.567", val)

Сначала TryParse () вернет false. Второй TryParse () вернет true и поместит 1234.567 в val.

6 голосов
/ 13 мая 2010

Попробуйте Double.TryParse. Это вернет false, если номер не в допустимом / распознанном формате, что позволяет вам делать все, что вам нужно сделать в этом сценарии.

5 голосов
/ 13 мая 2010

Просто чтобы расширить (правильные) ответы, уже предоставленные, вот полный пример кода использования 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 голосов
/ 13 мая 2010

Могу ли я спросить, почему ваше хранение удваивается в виде строк и смешивает их с нечисловыми строковыми значениями? Похоже, вы хотели бы избежать того, чтобы все это стоило.

1 голос
/ 13 мая 2010

Это неправильный подход, вам нужно заранее знать, что представляет каждый столбец в таблице данных. Запустите эту программу, чтобы увидеть, что может пойти не так:

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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...