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。 |
OrdinalIgnoreCase | Ordinal的基础上,忽略大小写。 |
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
}
字段 | 值 | 含义 |
---|---|---|
None | 0 | 指定字符串比较的默认选项设置。 |
IgnoreCase | 1 | 指示字符串比较必须忽略大小写。 |
IgnoreNonSpace | 2 | 指示字符串比较必须忽略不占空间的组合字符,比如音调符号。 Unicode 标准将组合字符定义为与基字符组合起来产生新字符的字符。 不占空间的组合字符在呈现时其本身不占用空间位置。 |
IgnoreSymbols | 4 | 指示字符串比较必须忽略符号,如空格字符、标点、货币符号、百分号、数学符号、& 号等等。 |
IgnoreKanaType | 8 | 指示字符串比较必须忽略 Kana 类型。 假名类型是指日语平假名和片假名字符,它们表示日语中的语音。 平假名用于表示日语自有的短语和字词,而片假名用于表示从其他语言借用的字词,如“computer”或“Internet”。 语音既可以用平假名也可以用片假名表示。 如果选择该值,则认为一个语音的平假名字符等于同一语音的片假名字符。 |
IgnoreWidth | 16 | 指示字符串比较必须忽略字符宽度。 例如,日语片假名字符可以写为全角或半角形式。 如果选择此值,则认为片假名字符的全角形式等同于半角形式。 |
OrdinalIgnoreCase | 268435456 | 字符串比较必须忽略大小写,然后执行序号比较。 此方法相当于先使用固定区域性将字符串转换为大写,然后再对结果执行序号比较。 |
StringSort | 536870912 | 指示字符串比较必须使用字符串排序算法。 在字符串排序中,连字符、撇号以及其他非字母数字符号都排在字母数字字符之前。 |
Ordinal | 1073741824 | 指示必须使用字符串的连续 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码的差。