2013-10-02 3 views
5

// 안녕하세요, 문자열이 10보다 크거나 작 으면 내 코드를 비교하려고 시도하지만 올바르게 작동하지 않습니다. 그것은 10 기록보다 값이 문자열 (왼쪽에서 오른쪽으로) 당신이 전적으로 비교하고, 그래서 숫자가 아닌 미만 10C# 문자열보다 크거나 같은 코드 문자열

int result = string1.CompareTo("10"); 
if (result < 0) 
{ 
    Console.WriteLine("less than 10"); 
} 
else if (result >= 0) 
{ 
    Console.WriteLine("10 or more"); 
} 
+0

'string' 또는'string.Length'를 의미합니까? –

답변

21

경우에도. String.CompareTo이 주문에 사용되지만 은 "2"보다 "낮다"는 것을 유의하십시오. 1은 이미 보다 낮은 인 문자 2보다 깁니다. 잘못된 형식을 가질 수 int.TryParsestring1 경우를 사용해야합니다

int i1 = int.Parse(string1); 
if (i1 < 10) 
{ 
    Console.WriteLine("less than 10"); 
} 
else if (i1 >= 10) 
{ 
    Console.WriteLine("10 or more"); 
} 

참고 :

나는 당신이 int로 변환되어 원하는 원하는 가정합니다. 그 길에 당신은 예를 들어, int.Parse에서 예외를 방지 :

int i1; 
if(!int.TryParse(string1, out i1)) 
{ 
    Console.WriteLine("Please provide a valid integer!"); 
} 
else 
{ 
    // code like above, i1 is the parsed int-value now 
} 

을하지만, 대신 확인하려면 문자열 이상 또는 짧은 10 자 이하의 경우, 당신은 그것의 사용이 Length 속성 :

if (string1.Length < 10) 
{ 
    Console.WriteLine("less than 10"); 
} 
else if (string1.Length >= 10) 
{ 
    Console.WriteLine("10 or more"); 
} 
+1

물론 해결책은 정확합니다. 'CompareTo'가 문자열과 함께 작동하는 방식은 복잡하고 문화 인식 비교를 사용하며 모든 경우에 간단한 사전 식 순서가 아닙니다. 예를 들어 많은 .NET 문화권에서 대시 '-'는 무시됩니다. 따라서 "-12".CompareTo ("10")은 "12".CompareTo ("10")'과 같으므로 양의 정수 ('1')를 제공합니다. 그리고 "-1".CompareTo ("10") "1".CompareTo ("10")은 음수 ('-1')입니다. 내가 틀렸을지라도 이것이 다른 곳의 .NET 문화가 _ 존재할 수도 있습니다. –

+3

'else if ...'조금 중복 된 것 같습니다 :) – Silvermind

+1

숫자가 아닌 경우를 대비하여 tryparse로 만들 것이라고 생각합니다. 그런 다음 else를 유지하고이 예외에 대해 else가 있어야합니다. –

관련 문제