我正在尝试比较小于等的字符串-以类似的方式比较数字。
我的问题是以下比较返回true:
var expectThisToBeFalse = "315160".CompareTo("40000") < 0;
我知道我可以将它们作为数字进行比较,但是在我的应用程序中,我不知道它们是数字还是字母。
任何人都可以解释我想念的东西吗,如果有比较有效的方法
例如将显示:
“ 1”小于“ 2”
“ a”小于“ b”
“ aa”大于“ b”
等...
答案 0 :(得分:6)
您什么都不丢失。您使用的方法按字母顺序比较两个字符串。这意味着如果字符串A在字符串B之前的字母中,则返回-1。
因为您要比较两个字符串,而不是两个数字,所以该函数会查看两个字符串的第一个字符(示例中为“ 3”和“ 4”。因为“ 3”的ASCII码比“ 4”(分别为51和52),该函数得出的结论是,“ 315160”在字母之前比“ 40000”更早,因此返回-1。因为您比较了此函数的结果(- 1)设为0,则变量正确地为true
,因为-1 <0。
对于您想要的,您将需要编写自己的函数。我不知道是否已经编写了任何功能。
以后编辑:more info on string.compare。
后来编辑2:令我感到有趣的是其他事情:
但是在我的应用程序中,我不知道它们是数字还是字母。
对于解决此问题的更简单方法,您可以先检查两个输入是数字还是字母。您会为自己省去很多麻烦,因为有时这两个输入将是数字,解决起来非常容易。