我有一个Asp.net文本框,使用Google Maps Api自动填充javascript。 文本框中的文本可以显示40.2 - 1,634英里的任何英里数。
我需要从文本框中取出文本并将其放入一个int中以存储在数据库中。
所以我真的需要做一些事情。文本总是显示为“40.2英里”(没有引号),我需要的只是一个圆数。或者Int。比如“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(miles);
我迷路了。 .Net 4.0 C#
答案 0 :(得分:0)
如果您没有点,则会有40 mi
之类的字符串,因此您需要使用该空格。
miles.Substring(0, miles.IndexOf('.') > 0 ? miles.IndexOf('.') : miles.IndexOf(' '));
答案 1 :(得分: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);
}