C#笔记--字符串比较:string.Compare

string.Compare(string strA, string strB, bool ignoreCase);

参数:

  • strA:字符串A
  • strB:字符串B
  • ignoreCase: 是否忽略大小写

返回值:

  • 1 : strA 大于 strB
  • 0 : strA 等于 strB
  • -1 : strA 小于 strB

string.Equals(string strA, string strB);

  等同于strA.Equals(strB);

参数:

  • strA:字符串A
  • strB:字符串B

返回值:

  • true : strA 等于 strB
  • false : strA 不等于 strB

string.Compare(string strA, string strB, StringComparison comparisonType)

  public enum StringComparison
  {
    [__DynamicallyInvokable] CurrentCulture,
    [__DynamicallyInvokable] CurrentCultureIgnoreCase,
    InvariantCulture,
    InvariantCultureIgnoreCase,
    [__DynamicallyInvokable] Ordinal,
    [__DynamicallyInvokable] OrdinalIgnoreCase,
  }
字段含义
CurrentCulture在当前的区域信息下进行比较,默认方式,同string.Compare(strA, strB)
CurrentCultureIgnoreCase在当前的区域信息下进行比较,忽略字符串的大小写。同string.Compare(strA, strB, true)
InvariantCulture在固定的区域信息下进行比较。在任何系统中(不同的culture)比较都将得到相同的结果,他是使用CultureInfo.InvariantCulture的静态成员CompareInfo来进行比较操作的。
InvariantCultureIgnoreCase在固定的区域信息下进行比较,忽略字符串的大小写。
Ordinal求出两者的ASCII码的差:return (int) strA.m_firstChar - (int) strB.m_firstChar
OrdinalIgnoreCaseOrdinal的基础上,忽略大小写。

string.Compare(string strA, string strB, CultureInfo culture, CompareOptions options)

  public enum CompareOptions
  {
    [__DynamicallyInvokable] None = 0,
    [__DynamicallyInvokable] IgnoreCase = 1,
    [__DynamicallyInvokable] IgnoreNonSpace = 2,
    [__DynamicallyInvokable] IgnoreSymbols = 4,
    [__DynamicallyInvokable] IgnoreKanaType = 8,
    [__DynamicallyInvokable] IgnoreWidth = 16, // 0x00000010
    [__DynamicallyInvokable] OrdinalIgnoreCase = 268435456, // 0x10000000
    [__DynamicallyInvokable] StringSort = 536870912, // 0x20000000
    [__DynamicallyInvokable] Ordinal = 1073741824, // 0x40000000
  }
字段含义
None0指定字符串比较的默认选项设置。
IgnoreCase1指示字符串比较必须忽略大小写。
IgnoreNonSpace2指示字符串比较必须忽略不占空间的组合字符,比如音调符号。 Unicode 标准将组合字符定义为与基字符组合起来产生新字符的字符。 不占空间的组合字符在呈现时其本身不占用空间位置。
IgnoreSymbols4指示字符串比较必须忽略符号,如空格字符、标点、货币符号、百分号、数学符号、& 号等等。
IgnoreKanaType8指示字符串比较必须忽略 Kana 类型。 假名类型是指日语平假名和片假名字符,它们表示日语中的语音。 平假名用于表示日语自有的短语和字词,而片假名用于表示从其他语言借用的字词,如“computer”或“Internet”。 语音既可以用平假名也可以用片假名表示。 如果选择该值,则认为一个语音的平假名字符等于同一语音的片假名字符。
IgnoreWidth16指示字符串比较必须忽略字符宽度。 例如,日语片假名字符可以写为全角或半角形式。 如果选择此值,则认为片假名字符的全角形式等同于半角形式。
OrdinalIgnoreCase268435456字符串比较必须忽略大小写,然后执行序号比较。 此方法相当于先使用固定区域性将字符串转换为大写,然后再对结果执行序号比较。
StringSort536870912指示字符串比较必须使用字符串排序算法。 在字符串排序中,连字符、撇号以及其他非字母数字符号都排在字母数字字符之前。
Ordinal1073741824指示必须使用字符串的连续 Unicode UTF-16 编码值进行字符串比较(使用代码单元进行代码单元比较),这样可以提高比较速度,但不能区分区域性。 如果XXXX16 小于 YYYY16,则以“XXXX16”代码单元开头的字符串位于以“YYYY16”代码单元开头的字符串之前。 此值必须单独使用,而不能与其他 CompareOptions 值组合在一起。

string.Compare(string strA, int indexA, string strB, int indexB, int length, bool ignoreCase, CultureInfo culture)

(从strA的第indexA个字符开始的长度为length的字符串)与(从strB的第indexB个字符开始的长度为length的字符串)在固定的区域信息(CultureInfo culture)下进行比较。

strA.CompareTo(strB)

等同于Compare(strA, strB, CompareOptions.None)

string.CompareOrdinal( string strA, int indexA, string strB, int indexB, int length)

将整个字符串每5个字符(10个字节)分成一组,然后逐个比较,找到第一个不相同的ASCII码后退出循环。并且求出两者的ASCII码的差。

  • 3
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值