0

我有一个 Asp.net 文本框,该文本框由 javascript 使用 Google Maps Api 自动填充。文本框中的文本可以显示从 40.2 到 1,634 英里的任意英里数。

我需要从文本框中获取文本并将其放入 int 中以存储在数据库中。

所以我真的需要一些事情发生。文本始终显示为“40.2 mi”(不带引号),我需要的只是一个整数。或诠释。像“40”或“1634”。

所以我可以将它存储在我的数据库表中。我试过 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(英里);

我迷路了。.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 回答