C#字符串的比较

本文介绍了.NET Framework中用于比较字符串的各种方法,包括String.Compare、String.CompareOrdinal、String.CompareTo等,并详细解释了每种方法的使用场景及返回值含义。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

.NET Framework 提供多个方法来比较字符串的值。下表列出并描述了这些值比较方法。

方法名使用

String.Compare

比较两个字符串的值。返回整数值。

String.CompareOrdinal

比较两个字符串而不考虑本地区域性。返回整数值。

String.CompareTo

将当前字符串对象与另一个字符串进行比较。返回整数值。

String.StartsWith

确定一个字符串是否以传递的字符串开头。返回布尔值。

String.EndsWith

确定一个字符串是否以传递的字符串结尾。返回布尔值。

String.Equals

确定两个字符串是否相同。返回布尔值。

String.IndexOf

返回字符或字符串的索引位置,索引位置从正在检查的字符串的开头开始。返回整数值。

String.LastIndexOf

返回字符或字符串的索引位置,索引位置从正在检查的字符串的结尾开始。返回整数值。

Compare

String.Compare 方法提供了将当前字符串对象与另一个字符串或对象进行全面比较的方法。此方法识别区域性。可以使用此函数来比较两个字符串或两个字符串的子串。另外,还提供了考虑或忽略大小写与区域性差异的重载。下表说明了此方法可能返回的三个整数值。

值类型条件

负整数

strA 小于 strB

0

strA 等于 strB

正整数

- 或 -

1

此实例大于 value

- 或 -

value 是一个空引用(在 Visual Basic 中为 Nothing)。

下面的示例使用 Compare 方法来确定两个字符串的相对值。

   
string MyString = " Hello World! " ; Console.WriteLine(String.Compare(MyString, " Hello World? " ));

此示例将 -1 显示到控制台。

前一个示例默认情况下区分区域性。如要执行不区分区域性的字符串比较,请使用 String.Compare 方法的重载,此方法重载允许通过提供 culture 参数指定要使用的区域性。若要查看演示如何使用 String.Compare 方法执行不区分区域性的比较的示例,请参见执行不区分区域性的字符串比较

CompareOrdinal

String.CompareOrdinal 方法比较两个字符串对象而不考虑本地区域性。此方法的返回值与前一个表中的 Compare 方法返回的值相同。

下面的示例使用 CompareOrdinal 方法来比较两个字符串的值。

   
string MyString = " Hello World! " ; Console.WriteLine(String.CompareOrdinal(MyString, " hello world! " ));
此示例将 -32 显示到控制台。

CompareTo

String.CompareTo 方法将当前字符串对象封装的字符串与另一个字符串或对象进行比较。此方法的返回值与前一个表中的 Compare 方法返回的值相同。

下面的示例使用 CompareTo 方法将 MyString 对象与 OtherString 对象进行比较。

   
String MyString = " Hello World " ; String OtherString = " Hello World! " ; int MyInt = MyString.CompareTo(OtherString); Console.WriteLine( MyInt );

此示例将 1 显示到控制台。

String.CompareTo 方法的所有重载在默认情况下都会执行区分区域性和区分大小写的比较。未提供此方法的允许执行不区分区域性的比较的重载。为了使代码清楚,建议您使用 String.Compare 方法,为区分区域性的操作指定 CultureInfo.CurrentCulture 或为不区分区域性的操作指定 CultureInfo.InvariantCulture。若要查看演示如何使用 String.Compare 方法执行区分区域性和不区分区域性这两种比较的示例,请参见执行不区分区域性的字符串比较

Equals

String.Equals 方法可以轻易地确定两个字符串是否相同。这个区分大小写的方法返回布尔值 TrueFalse。它可以在现有的类中使用,这一点将在下一个示例中阐释。下面的示例使用 Equals 方法来确定一个字符串对象是否包含词组“Hello World”。

   
string MyString = " Hello World " ; Console.WriteLine(MyString.Equals( " Hello World " ));

此示例将 True 显示到控制台。

此方法也可用作静态方法。下面的示例使用静态方法比较两个字符串对象。

   
string MyString = " Hello World " ; string YourString = " Hello World " ; Console.WriteLine(String.Equals(MyString, YourString));
此示例将 True 显示到控制台。

StartsWith 和 EndsWith

可以使用 String.StartsWith 方法来确定一个字符串对象是否以构成另一个字符串的同一组字符开始。如果当前字符串对象以传递的字符串开始,则这个区分大小写的方法返回 true,否则返回 false。下面的示例使用此方法来确定一个字符串对象是否以“Hello”开始。

   
string MyString = " Hello World " ; Console.WriteLine(MyString.StartsWith( " Hello " ));

此示例将 True 显示到控制台。

String.EndsWith 方法将传递的字符串与位于当前字符串对象结尾处的字符进行比较。它也返回布尔值。下面的示例使用 EndsWith 方法检查字符串的结尾。

   
string MyString = " Hello World " ; Console.WriteLine(MyString.EndsWith( " Hello " ));

IndexOf 和 LastIndexOf

可以使用 String.IndexOf 方法来确定特定字符在字符串中第一次出现的位置。这个区分大小写的方法从字符串的开头开始计数,并使用从零开始的索引返回传递的字符的位置。如果无法找到该字符,则返回值 –1。

下面的示例使用 IndexOf 方法搜索字符“l”在字符串中第一次出现的位置。

   
string MyString = " Hello World " ; Console.WriteLine(MyString.IndexOf( ' l ' ));

此示例将 2 显示到控制台。

String.LastIndexOf 方法类似于 String.IndexOf 方法,不同之处在于它返回特定字符在字符串中最后出现的位置。它区分大小写,并使用从零开始的索引。

下面的示例使用 LastIndexOf 方法来搜索字符“l”在字符串中最后出现的位置。

   
string MyString = " Hello World " ; Console.WriteLine(MyString.LastIndexOf( ' l ' ));

此示例将 9 显示到控制台。

当与 String.Remove 方法一起使用时,这两种方法都非常有用。可以使用 IndexOfLastIndexOf 方法来检索字符的位置,然后将该位置提供给 Remove 方法以便移除字符或移除以该字符开头的单词。

作者:佚名
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值