2013-02-28 8 views
1

문자열을 정수로 변환해야합니다. 내 문자열은 어떤 유형 (float/int/string/특수 문자)이 될 수 있습니다. 예를 들어C# /. NET에서 문자열을 정수로 변환

는 :

If my string is "2.3", I need to convert to = 2 
If my string is "anyCharacter", I need to convert to = 0 
If my string is "2", I need to convert to = 2 

나는 시도 다음과 같은 : 나는 그것을 어떻게 변환합니까

Input string was not in a correct format

:

string a = "1.25";int b = Convert.ToInt32(a);  

내가 오류가 발생했습니다?

답변

2

사용 Double.TryParse()하고, Convert.ToInt()를 사용 int로 변환 :

double parsedNum; 
if (Double.TryParse(YourString, out parsedNum) { 
    newInt = Convert.ToInt32(num); 
} 
else { 
    newInt = 0; 
} 
+0

@K D 감사합니다 :-) –

1

지금까지 내가, 어떤 일반적인 변환이 아니라는 것을 알고 그래서 당신은 변수의 유형을 찾기 위해 switch을하고 다음 (각 유형의) 다음 중 하나를 사용해야 할 것 같이

int.Parse(string) 

또는

int.TryParse(string, out int) 

두 번째

는 변환이 통과 또는 실패 있는지 확인하기 위해 사용할 수있는 부울을 반환합니다.

가장 좋은 옵션은 int과 달리 double 또는 decimal 구문 분석을 사용하면 소수 자릿수가 제거되지 않기 때문입니다.

1

Convert.ToInt32는 찾을 수없는 곳이라고 생각합니다. Integer.Tryparse를 사용하고 TryParse가 false로 평가되면 변수에 0을 할당합니다. TryParse를 사용하기 전에 문자열에서 문자열을 찾으면 점 뒤에있는 문자를 간단히 삭제할 수 있습니다.

또한 일부 언어에서는 구분 기호로 ","를 사용합니다. 당신이 그것의 가치를 한 번

1

시도 :

if (int.TryParse(string, out int)) { 
    variable = int.Parse(string); 
} 
1

부동 소수점 숫자로 구문 분석하고 그 후에 정수로 변환하십시오.

double num; 
if (Double.TryParse(a, out num) { 
    b = (int)num; 
} else { 
    b = 0; 
} 
+1

+1, 마침내 정답이 게시 됨 : D (그리고 다른 사람들이 귀하의 코드를 복사하기 시작했습니다) – fardjad

1

이렇게하면 도움이됩니다. double 인 것처럼 문자열을 처리하고 Math.Floor() 문자열을 가장 가까운 정수로 반올림합니다.

double theNum = 0; 
string theString = "whatever"; // "2.3"; // "2"; 
if(double.TryParse(theString, out theNum) == false) theNum = 0; 
//finally, cut the decimal part 
int finalNum = (int)Math.Floor(theNum); 

참고하십시오 if 인해 theNum 초기화에, 당 자체가 필요하지만,이 방법이 더 읽을 수 있어요되지 않을 수 있습니다. 변환이 성공 아니었다면

0

시도 뭔가 :

public int ForceToInt(string input) 
{ 
    int value; //Default is zero 
    int.TryParse(str, out value); 

    return value; 
} 

이 트릭을 할 것입니다. 그러나 나는이 방법을 사용하지 않는 것이 좋습니다. 당신이 그것을 얻을 때마다 당신의 의견을 통제하는 것이 더 낫습니다.