2012-06-23 47 views
0

我有一个asp.net 4文本框控件,它的文本被一些java脚本动态填充。 Google地图电话确切无误。它给了我从一点到另一点的里程数。显示文本时,它显示“234英里”我需要摆脱此文本的“mi”部分,因为文本正在转换为Int32在我的数据库中更新表。如何删除字符串/文本框中的字符?

基本上我只能有一个INT。文本框中没有其他内容。我如何摆脱文字末尾的“mi”?

感谢 C# EB

回答

1

在回发,你保存它之前,你可以:

var saveValue = Int32.Parse(tbTarget.Text.Replace("mi", string.Empty).Trim()); 
0

简单String.Substring作品也:

String leftPart = TxtMileAge.Text.Substring(0, txt.IndexOf(' ')); 
int mileAge = int.Parse(leftPart); 

这检索的一部分String的范围为0 - indexOfWhiteSpace,并将其转换为int

编辑:因为该值可以有小数位(如你评论),你需要把它解析到double,圆形,然后将其转换为int

var txtEstDistance = new TextBox() { Text = "40.2 mi" }; 
String leftPart = txtEstDistance.Text.Substring(0, txtEstDistance.Text.IndexOf(' ')); 
double distanceMiles = double.Parse(leftPart, System.Globalization.CultureInfo.InvariantCulture); 
int oDdstanceMiles = (int)Math.Round(distanceMiles, MidpointRounding.AwayFromZero); 
+0

谢谢蒂姆。我试过你的代码。改变它只是一点点:String leftPart = txtEstDistance.Text.Substring(0, txtEstDistance.Text.IndexOf(' ')); int oDistanceMiles = int.Parse(leftPart);我得到这个错误:“长度不能小于零。 参数名称:长度”此外,正在自动填充的数字是“40.2英里”,我真正需要的只是40或任何出现的整数。在小数点处截去。我格式化子字符串是否错误?谢谢。 –

+0

'40.2 mi'不会导致'ArgumentOutOfRangeException',只有没有空白时才会发生。你不能将'40.2'解析为'int'('FormatException'),因为它有小数位。所以你需要把它解析成一个“double”然后四舍五入。我会编辑我的答案。 –

0

如果你使用可变长度的字符(比如说有人输入英里数),那么你必须对字符串(char数组)进行foreach并在每个字符上检查isnumeric。