比较两个字符串的值

15

我想要比较两个字符串的值,就像这样:

if (lblCapacity.Text <= lblSizeFile.Text)

我该怎么做?


3
文本属性是数字值?您可以使用Int32.Parse - gotopie
2
在这个上下文中,<= 是什么意思? - Oded
3
@Oded: 我认为是小于或等于,相对于词典排序。 - DonCallisto
5
@DonCallisto - 我不喜欢假设,这就是为什么我向原帖提问的原因。 - Oded
1
没错,这其实是一个不错的问题 如果楼主定义了"小于"的含义 的话。没有定义的话,我们可能在谈论字母顺序、长度、大小写等其他事情。可惜楼主从未回来澄清。 - Rufus L
6个回答

41
我假设你是在字典序中比较字符串,这种情况下可以使用静态方法String.Compare。
例如,你有两个字符串str1和str2,你想知道str1是否在字母表上排在str2之前。你的代码应该像这样:
string str1 = "A string";
string str2 = "Some other string";
if(String.Compare(str1,str2) < 0)
{
   // str1 is less than str2
   Console.WriteLine("Yes");
}
else if(String.Compare(str1,str2) == 0)
{
   // str1 equals str2
   Console.WriteLine("Equals");
}
else
{
   // str11 is greater than str2, and String.Compare returned a value greater than 0
   Console.WriteLine("No");
}

这段代码将返回"yes"。String.Compare有很多重载版本,包括一些可以忽略大小写或使用格式字符串的版本。请查看String.Compare

当然,我忘了提到Control.Text属性返回一个字符串,这就是为什么我使用String.Compare的原因。 - Aaron Deming
对于不熟悉词典顺序的读者,需要提醒一下,这意味着“9”比“13246”大,但“13”比“13246”小。 - Damian Vogel

6
int capacity;
int fileSize;

if (!int.TryParse(lblCapacity.Text, out capacity) //handle parsing problem;
if (!int.TryParse(lblSizeFile.Text, out fileSize) //handle parsing problem;

if (capacity <= fileSize) //... do something.

+1,如果有人为我的商店编写代码,这就是我所需要的。 - Steve

2

如果文本框中有整数,则:

int capacity;
int fileSize;

if(Int32.TryParse(lblCapacity.Text,out capacity) && 
   Int32.TryParse(lblSizeFile.Text,out fileSize))
{
    if(capacity<=fileSize)
    {
        //do something
    }
}

1

看起来标签包含数字。那么你可以尝试使用 Int32.Parse 函数:

if (int.Parse(lblCapacity.Text) <= int.Parse(lblSizeFile.Text))

当然,您可能想要添加一些错误检查(查看Int32.TryParse),并且可能需要将解析的整数值存储在某些变量中,但这是基本概念。

1

比较是你所需要的。

int c = string.Compare(a , b);

4
当你想要 "11" < "2" == true" 时。 - H H
1
问题没有表明它是一个数值。 - Yeshvanthni

0

使用 Int32.ParseInt32.TryParse 或其他等效方法。然后可以对这些值进行数值比较。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接