2012-06-24 7 views
0

Google지도 Api를 사용하여 javascript로 자동 채워지는 Asp.net 텍스트 상자가 있습니다. 텍스트 상자의 텍스트는 40.2 - 1,634 마일의 요율을 나타낼 수 있습니다.Google지도의 십진수 자리를 int32로 변환

텍스트 상자의 텍스트를 가져 와서 DB에 저장하기 위해 int에 넣어야합니다.

그래서 실제로 나는 몇 가지 일이 필요합니다. 텍스트는 항상 "40.2 mi"(따옴표 제외)로 표시되며 필요한 것은 라운드 번호입니다. 또는 Int. "40"또는 "1634"와 같은

그래서 DB 테이블에 저장할 수 있습니다. Substring and 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

아마 "mi"접미어가 제거되어 있어야합니다. – Pointy

답변

0

"mi"를 먼저 제거하고 나머지는 float로 처리하면 어떻습니까? 그런 다음 Math.Round를 사용하여 정수로 반올림하고 int로 변환 할 수 있습니다.

맞으면 NumberStyles.Float 열거 형이 자동으로 선행 또는 후행 공백을 정리합니다. 물론 문자열도 사용할 수 있습니다 .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); 
}
0

점이 없으면 40 mi과 같은 문자열이 있으므로 공백을 사용해야합니다.

miles.Substring(0, miles.IndexOf('.') > 0 ? miles.IndexOf('.') : miles.IndexOf(' '));