0

GoogleMapsApiを使用してjavascriptによって自動入力されるAsp.netテキストボックスがあります。テキストボックス内のテキストには、40.2〜1,634マイルの任意のマイル数を表示できます。

テキストボックスからテキストを取り出してintに入れ、DBに保存する必要があります。

だから本当に私は起こるためにいくつかのことが必要です。テキストは常に「40.2mi」(引用符なし)と表示され、必要なのは単なる概数です。またはInt。「40」や「1634」のように。

したがって、これをDBテーブルに格納できます。SubstringとMath.Roundを試しました。しかし、私は例外を取得し続けます。私の最近の試みはこれです:

        string miles = txtEstDistance.Text;
        miles.Substring(0, miles.IndexOf('.') > 0 ? miles.IndexOf('.') : miles.Length);

        int oDistanceMiles = Convert.ToInt32(miles);

そして、私が得ている例外は、「入力文字列が正しい形式ではありませんでした」です。このコード行の場合:

int oDistanceMiles = Convert.ToInt32(miles);

道に迷いました。.Net 4.0 C#

4

2 に答える 2

0

ドットがない場合は、のような文字列がある40 miため、スペースを使用する必要があります。

miles.Substring(0, miles.IndexOf('.') > 0 ? miles.IndexOf('.') : miles.IndexOf(' '));
于 2012-06-24T13:37:47.963 に答える
0

最初に「mi」を取り除き、残りをフロートとして扱うとどうなりますか?次に、Math.Roundを使用して整数に丸め、それをintに変換できます。

私が正しい場合、NumberStyles.Float列挙型は、先頭または末尾の空白を自動的にクリーンアップします。もちろん、string.Trim()を使用することもできます

var miles = txtEstDistance.Text;

miles = miles.Substring(0, miles.IndexOf("mi"));

float tmpdistance;
var success = float.TryParse(miles, NumberStyles.Float, CultureInfo.InvariantCulture, out tmpdistance);

if (success)
{
    var distance = Convert.ToInt32(Math.Round(tmpdistance, 0));

    // or

    distance = (int) Math.Round(tmpdistance, 0);
}
于 2012-06-24T13:38:09.063 に答える