//你好,我试图让我的代码工作我的比较,如果字符串大于或小于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");
}
//你好,我试图让我的代码工作我的比较,如果字符串大于或小于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");
}
字符串是不是一个数字,所以你比较字典顺序(从左至右)。 String.CompareTo
用于订购,但请注意"10"
是“低于”"2"
,因为char 1
已经是低于比char 2
。
我想,你希望要的是将它转换为int
什么:
int i1 = int.Parse(string1);
if (i1 < 10)
{
Console.WriteLine("less than 10");
}
else if (i1 >= 10)
{
Console.WriteLine("10 or more");
}
请注意,您应该使用int.TryParse
如果string1
可能有一个无效的格式。在这种方式可以防止异常在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");
}
当然,解决方案是正确的。 'CompareTo'处理字符串的方式很复杂,它使用文化意识的比较,在所有情况下它都不是简单的字典排序。例如,在许多.NET文化中,短划线“-'将被忽略。所以''-12“.CompareTo(”10“)'就像''12”.CompareTo(“10”)',它给出一个正整数('1')。和'“-1”.CompareTo(“10”)一样,''1“.CompareTo(”10“)'为负数('-1')。这可能是不同的.NET文化,尽管我怀疑它。 –
'else if ...'seemes有点多余:) – Silvermind
我想我会让它成为一个tryparse,以防它不是数字。然后保持else,如果有其他的例外。 –
你的意思是'string'或'string.Length'? –