C#的字符串比较

目录
  • 一、函数方法
  • 二、Compare方法
  • 三、CompareTo方法
  • 四、Equals方法
  • 五、CompareOrdinal方法
  • 总结

ASCII码-百度百科

微软官方C#函数文档

一、函数方法

函数方法 返回值
string.Compare(字符串1,字符串2) 相等时返回0,前者较大时返回1,后者较大时返回-1
string.CompareOrdinal(字符串1, 字符串2) 相等时返回0,否则返回前者减去后者的ASCII码值
字符串1.CompareTo(字符串2) 相等时返回0,前者较大时返回1,后者较大时返回-1
字符串1.Equals(字符串2) 相等时返回True,否则返回False

二、Compare方法

string.Compare(str1, str2)

参数: str1str2为两个要比较的字符串

返回值:如果两者相等返回0,如果str1 > str2返回1,如果str1 < str2返回-1

注意:比较字符串并不是比较字符串的长度,而是从首字符开始逐个比较字符的大小,如果已经分出大小则结束比较,如果相等则继续比较下一个字符,直到分出大小或到达字符串尾。

using System;
namespace Test
{
    class Program
    {
        static void Main(string[] args)
        {
            string str1, str2;
            /*
            样例1(str1 < str2):因为str1的第一个字符为A比B小,所以结果会直接返回-1,不对之后的值进行比较
            */
            str1 = "ABC";
            str2 = "B";
            Console.WriteLine("样例1:{0}",string.Compare(str1,str2));
            /*
            样例2(str1 > str2):因为str2仅有一个字符A,在比较完第一个字符后str1还有多余的字符,结果会返回1
            */
            str1 = "ABC";
            str2 = "A";
            Console.WriteLine("样例2:{0}", string.Compare(str1, str2));
            /*
            样例3(str1 < str2):在比较时不是比较ASCII码,比较时默认小写字母小于大写字母
            */
            str1 = "a";
            str2 = "A";
            Console.WriteLine("样例3:{0}", string.Compare(str1, str2));
        }
    }
}

三、CompareTo方法

str1.CompareTo(str2)

参数: str1str2为两个要比较的字符串

返回值:如果两者相等返回0,如果str1 > str2返回1,如果str1 < str2返回-1

注意: CompareTo方法和Compare方法类似,CompareTo()方法以实例对象本身和目标字符串进行比较。比较字符串并不是比较字符串的长度,而是从首字符开始逐个比较字符的大小,如果已经分出大小则结束比较,如果相等则继续比较下一个字符,直到分出大小或到达字符串尾。

using System;
namespace Test
{
    class Program
    {
        static void Main(string[] args)
        {
            string str1, str2;
            /*
            样例1(str1 < str2):因为str1的第一个字符为A比B小,所以结果会直接返回-1,不对之后的值进行比较
            */
            str1 = "ABC";
            str2 = "B";
            Console.WriteLine("样例1:{0}",str1.CompareTo(str2));
            /*
            样例2(str1 > str2):因为str2仅有一个字符A,在比较完第一个字符后str1还有多余的字符,结果会返回1
            */
            str1 = "ABC";
            str2 = "A";
            Console.WriteLine("样例2:{0}", str1.CompareTo(str2));
            /*
            样例3(str1 < str2):在比较时不是比较ASCII码,比较时默认小写字母小于大写字母
            */
            str1 = "a";
            str2 = "A";
            Console.WriteLine("样例3:{0}", str1.CompareTo(str2));
        }
    }
}

四、Equals方法

str1.Equals(str2)

参数: str1str2为两个要比较的字符串

返回值:如果两者相等返回True,否则返回False

using System;
namespace Test
{
    class Program
    {
        static void Main(string[] args)
        {
            string str1, str2;
            /*
            样例1(str1 == str2):相等时直接返回True
            */
            str1 = "ABC";
            str2 = "ABC";
            Console.WriteLine("样例1:{0}",str1.Equals(str2));
            /*
            样例2(str1 != str2):不相等时返回False
            */
            str1 = "ABC";
            str2 = "ACB";
            Console.WriteLine("样例2:{0}", str1.Equals(str2));
        }
    }
}

五、CompareOrdinal方法

string.CompareOrdinal(str1, str2)

参数: str1str2为两个要比较的字符串

返回值:如果两者相等返回0,否则返回str1减去str2两者ASCII码的差值

using System;
namespace Test
{
    class Program
    {
        static void Main(string[] args)
        {
            string str1, str2;
            /*
            样例1(str1 == str2):相等时直接返回0
            */
            str1 = "ABC";
            str2 = "ABC";
            Console.WriteLine("样例1:{0}",string.CompareOrdinal(str1,str2));
            /*
            样例2(str1 > str2):B的ASCII码为66,A的ASCII码为65, B减去A的ASCII码值为1
            */
            str1 = "B";
            str2 = "A";
            Console.WriteLine("样例2:{0}", string.CompareOrdinal(str1,str2));
            /*
            样例3(str1 > str2):a的ASCII码为97,A的ASCII码为65, a减去A的ASCII码值为32
            */
            str1 = "a";
            str2 = "A";
            Console.WriteLine("样例3:{0}", string.CompareOrdinal(str1, str2));
            /*
            样例4(str1 > str2):如果含有多个字符且两者不相等时,返回的是两个字符串的首字符ASCII码的差值,即32
            */
            str1 = "abcd";
            str2 = "ABCD";
            Console.WriteLine("样例4:{0}", string.CompareOrdinal(str1, str2));
        }
    }
}

总结

本篇文章就到这里了,希望能给你带来帮助,也希望您能够多多关注我们的更多内容!

(0)

相关推荐

  • c#压缩字符串的方法

    一:背景 1. 讲故事 在我们的一个全内存项目中,需要将一家大品牌店铺小千万的trade灌入到内存中,大家知道trade中一般会有订单来源,省市区 ,当把这些字段灌进去后,你会发现他们特别侵蚀内存,因为都是字符串类型,不知道大家对内存侵蚀性是不是很清楚,我就问一个问题. Question: 一个空字符串占用多大内存? 你知道吗? 思考之后,下面我们就一起验证下,使用windbg去托管堆一查究竟,代码如下: static void Main(string[] args) { string s =

  • C# 根据字符串生成二维码的实例代码

    1.先下载NuGet包(ZXing.Net) 2.新建控制器及编写后台代码 using System; using System.Collections.Generic; using System.Drawing; using System.Drawing.Imaging; using System.IO; using System.Linq; using System.Web; using System.Web.Mvc; using ZXing; using ZXing.QrCode; nam

  • C#中截取字符串的的基本方法详解

    分享几个经常用到的字符串的截取 string str="123abc456"; int i=3; 1 取字符串的前i个字符 str=str.Substring(0,i); // orstr=str.Remove(i,str.Length-i); 2 去掉字符串的前i个字符: str=str.Remove(0,i); // or str=str.Substring(i); 3 从右边开始取i个字符: str=str.Substring(str.Length-i); // or str=s

  • C# 字符串与unicode互相转换实战案例

    我就废话不多说了,大家还是直接看代码吧~ /// <summary> /// 字符串转Unicode /// </summary> /// <param name="source">源字符串</param> /// <returns>Unicode编码后的字符串</returns> public static string String2Unicode(string source) { var bytes = En

  • C# 忽略大小写进行字符串比较

    使用场景 字符串比较 在EF或者其他地方使用的时候,字符串的比较非常常见. 使用全部转化为大写或者小写进行比较,有时候并不能满足使用需求. 所以使用另外的字符串比较非常有意义. 代码示例 class Program { static void Main(string[] args) { CompareInfo Compare = CultureInfo.InvariantCulture.CompareInfo; string a = "AaasasaAAaasaa"; string b

  • PHP实现字符串翻转功能的方法【递归与循环算法】

    本文实例讲述了PHP实现字符串翻转功能的方法.分享给大家供大家参考,具体如下: 提到实现字符串反转的方法,大家都会想到用循环.确实,循环是一个内存占用量小且实现简单的方式.但是还有一种方式可以实现这样的功能,那就是递归. php支持递归函数,递归函数就是函数调用自己本身.这些函数特别适用于动态浏览数据结构,例如连接列表和树. 例子: <?php //递归实现字符串翻转 function reverse_r($str){ if(strlen($str)>0){ reverse_r(substr(

  • 利用正则表达式将字符串分组示例代码

    前言 最近工作中遇到一个问题,需求是碰到'122333<<<<'这种字符串,要将其连贯的部分取出,得出['1', '22', '333', '<<<<']这样的列表,能想到的常规办法,遍历字符串,后一个与前一个逐个比较,这样真的很麻烦!又想到了另外两种方法,话不多说了,来一起看看详细的示例代码: 一.实际上可以借助itertools模块的groupby()方法来处理: import itertools Str = '122333<<<<

  • Json对象与Json字符串互转(4种转换方式)

    1>jQuery插件支持的转换方式: 复制代码 代码如下: $.parseJSON( jsonstr ); //jQuery.parseJSON(jsonstr),可以将json字符串转换成json对象 2>浏览器支持的转换方式(Firefox,chrome,opera,safari,ie9,ie8)等浏览器: 复制代码 代码如下: JSON.parse(jsonstr); //可以将json字符串转换成json对象 JSON.stringify(jsonobj); //可以将json对象转换

  • JS截取字符串常用方法详细整理

    使用 substring()或者slice() 函数:split() 功能:使用一个指定的分隔符把一个字符串分割存储到数组 例子: str="jpg|bmp|gif|ico|png"; arr=theString.split("|"); //arr是一个包含字符值"jpg"."bmp"."gif"."ico"和"png"的数组 函数:Join() 功能:使用您选择的分

  • DOS(bat)字符串替换原理

    把字符串 "c:/test/1" 中的 "/" 全部替换成 "//" 的原理: (假设 "C:/TEST/1" 字符串已存在 VAR 变量中:) C:/WINDOWS>set "var=C:/TEST/1" (将 var 变量中的字符串里 "/" 字符全部替换成 "//") C:/WINDOWS>set "var=%var:/=//%"

  • Perl字符串处理函数大全

    下面请看本文详细介绍. Perl字符串处理函数 1. index 语法: position=index(string,substring,position); 语义: 返回子串substring在字符串string中的位置,如果不存在则返回-1. 参数position是可选项,表示匹配之前跳过的字符数,或者说从该位置开始匹配. 2. rindex 语法: position=rindex(string,substring,position); 语义: 与index类似,区别是从右端匹配. 3. l

  • redis内部数据结构之SDS简单动态字符串详解

    前言 reids 没有直接使用C语言传统的字符串表示(以空字符结尾的字符数组)而是构建了一种名为简单动态字符串的抽象类型,并为redis的默认字符串表示,因为C字符串不能满足redis对字符串的安全性.效率以及功能方面的需求 1.SDS 定义 在C语言中,字符串是以'\0'字符结尾(NULL结束符)的字符数组来存储的,通常表达为字符指针的形式(char *).它不允许字节0出现在字符串中间,因此,它不能用来存储任意的二进制数据. sds的类型定义 typedef char *sds; 每个sds

  • redis命令行查看中文不乱码的方法(十六进制字符串处理)

    redis命令行查看中文不乱码 Redis在使用命令行操作时,如果查看内容中包含中文,会显示16进制的字符串"\xe4\xb8\xad\xe5\x9b\xbd" 127.0.0.1:6379> set k1 '中国' OK 127.0.0.1:6379> get k1 "\xe4\xb8\xad\xe5\x9b\xbd" 如果想要看到的中文不乱码,解决方案有两种: 一.使用echo $ echo -e `redis-cli get k1` 中国 二.re

  • Mysql字符串截取函数SUBSTRING的用法说明

    感觉上MySQL的字符串函数截取字符,比用程序截取(如PHP或JAVA)来得强大,所以在这里做一个记录,希望对大家有用. 函数: 1.从左开始截取字符串 left(str, length) 说明:left(被截取字段,截取长度) 例:select left(content,200) as abstract from my_content_t 2.从右开始截取字符串 right(str, length) 说明:right(被截取字段,截取长度) 例:select right(content,200

  • Prototype源码浅析 String部分(三)之HTML字符串处理

    HTML处理 stripTags  | escapeHTML |  unescapeHTML     JSON处理 unfilterJSON |  isJSON |  evalJSON |  parseJSON 脚本处理 stripScripts |  extractScripts  | evalScripts现在,String部分转入具体的关联应用,分别对应 HTML字符串,JSON字符串和HTML中的脚本字符串. [乱入一句,有关JSON的一点东西,可以看看http://www.cnblog

随机推荐