.NET 中常见的几种字符串比较方法

 对于字符串比较是比较基础的话题,可以用“==”来实现,其实在 .NET还提供了几种比较字符串的方法,本文通过代码实践介绍他们的使用方法,大家可以拷贝代码到控制台尝试。我们先来看看官方的介绍:.

方法名称 使用
String.Equals 确定两个字符串是否相同。 返回一个布尔值。
String.StartsWith 确定字符串是否以传递的字符串开头。 返回一个布尔值。
String.EndsWith 确定字符串是否以传递的字符串结尾。 返回一个布尔值。
String.Contains 确定一个字符或字符串是否出现在另一个字符串中。 返回一个布尔值。
String.IndexOf 返回字符或字符串的索引位置,从正在检查的字符串的开头开始。 返回一个整数值。
String.LastIndexOf 返回字符或字符串的索引位置,从正在检查的字符串的结尾开始。 返回一个整数值。

官方可能是翻译的缘故,写得比较抽象。下面用通俗的话语具体介绍他们的使用和区别:

1、String.Equals

    这个方法是我们常用的方法,主要判断两个字符串是否相等,如果相等返回true,否则为false。Equals也可以用于其它类型,比如Int.Equals,在抛开类型外它与“==”主要是看是值类型还是引用类型,如果是值类型、string类型,它们没有啥区别;如果是引用类型,那么Equals是比较实际内容是否相同,而“==”对比的是内存地址是否相同。

    string string1 = "欢迎关注 DotNet开发跳槽";    string string2 = "欢迎关注 DotNet开发跳槽";    string string3 = "DotNet开发跳槽";    Console.WriteLine(string1.Equals("欢迎关注 DotNet开发跳槽"));    Console.WriteLine(string1.Equals(string2));    Console.WriteLine(string1.Equals(string3));    //输出结果:true true false

2、String.StartsWith和String.EndsWith

这个两个我们一起讲,StartsWith是比较两个字符串的前面的字符串是否相同,如果相同返回true否则false

    string string1 = "欢迎关注 DotNet开发跳槽";    Console.WriteLine(string1.StartsWith("欢迎关注"));    Console.WriteLine(string1.StartsWith("关注"));    //输出:true,false

EndsWith和StartsWith相反,比较结尾的字符串是否相同,如果相同返回true否则false。

     string string1 = "欢迎关注 DotNet开发跳槽";    Console.WriteLine(string1.EndsWith("开发跳槽"));    Console.WriteLine(string1.EndsWith("DotNet开发"));     //输出:true,false

3、String.Contains

这个方法也比较常见,用于查找字符串中是否包含某字符串,如果包含返回true,否则fasle。注意使用时区分大小写。如下案例

string s1 = "DotNet开发跳槽";string s2 = "Net";Console.WriteLine(s1.Contains(s2)) ;string s3 = "NET";Console.WriteLine(s1.Contains(s3)) ;//输出:true false

如果不区分大小写可以在重载中使用StringComparison.OrdinalIgnoreCase,支持.NETCore2.1以上版本。

 string s1 = "DotNet开发跳槽"; string s3 = "NET"; Console.WriteLine(s1.Contains(s3, StringComparison.OrdinalIgnoreCase)); //结果:true

4、IndexOf 和 LastIndexOf 方法

IndexOf查找某字符在字符串中的索引位置,从0开始计算,如果找不到返回-1,区分大小写,如果不区分大小写同样可以在重载中使用StringComparison.OrdinalIgnoreCase。这个可以用于通过某字符截取字符串。

string string1 = "DotNet开发跳槽";Console.WriteLine(string1.IndexOf('t'));Console.WriteLine(string1.IndexOf('t',3));//可以设置开始位置Console.WriteLine(string1.IndexOf('T',StringComparison.OrdinalIgnoreCase));//输出结果:2,5,2

LastIndexOf方法是查找某字符在字符串中最后的位置,区分大小写 ,不支持在重载中使用StringComparison.OrdinalIgnoreCase。

string string1 = "DotNet开发跳槽";     Console.WriteLine(string1.LastIndexOf('t'));     //输出结果:5
结语
    本文通过案例讲述了.NET中几种字符串的比较方法,写的比较基础,但是其中几个方法笔者还真没有用过,写出来通过对比巩固一下基础。

    希望本文对大家学习和工作有一定参考价值,同时欢迎大家留言讨论,谢谢大家的支持。