-3

解決できない問題があります。

データベースから値を取得しています。データベース内のこの値は、として保存されますnvarchar

値の種類を理解する必要があります。

例えば:

  • 2012年12月12日->日時
  • 15:00->時間
  • 67.45->ダブル

タイプを理解するために、私はこのTryParse方法を使用します。

それがDateTimeであるかどうかを理解するための例私はこのコードを実行します:

DateTime valueConverted;

if(DateTime.TryParse(input.ToString(), out valueConverted))
{
   // IS DATETIME
}

問題は、データベースから取得した値が次の場合です。

  • 0900
  • 009000

文字列として認識してほしい。問題は、doubleへの変換が成功し、値が値=900のdoubleに変換されることです。

0900、000060のような値が2倍ではなく、2倍であることをどのように認識できStringますか?

4

4 に答える 4

2

最も単純なのは、おそらく と照合すること^0[0-9]+$です。

これは重要な問題であり、予期していなかった特殊なケースが必ず見つかることを理解してください。可能な場合はデータモデルを変更し、異なる型を異なる列に格納するか、格納されたデータ型を示す別の列を作成することをお勧めします。すべてを文字列として保存することは、一般的に悪い考えです。

于 2013-01-04T09:34:17.593 に答える
0

これは非常に単純化されているように見えますが、あなたの説明に基づいて、それはトリックを行います:

if (!string.IsNullOrEmpty(input) &&
    input[0] == '0' &&
    input.All(c => char.IsDigit(c)))
{
    // We have a string.
}
于 2013-01-04T09:36:53.273 に答える
0

正規表現マッチを使用できます

すべてのタイプのデータ型フォーマット文字列を作成し、正規表現と一致させます。

http://www.dotnetperls.com/regex-match

于 2013-01-04T10:54:59.860 に答える
0
if (input.StartsWith("0"))
{
    // string
}
else
{
    // double
    var number = double.Parse(input);
}
于 2013-01-04T11:10:40.853 に答える