String.Equals 方法
定义
重要
一些信息与预发行产品相关,相应产品在发行之前可能会进行重大修改。 对于此处提供的信息,Microsoft 不作任何明示或暗示的担保。
确定两个 String 对象是否具有相同的值。
重载
Equals(Object) |
确定此实例是否与指定的对象(也必须是 String 对象)具有相同的值。 |
Equals(String) |
确定此实例是否与另一个指定的 String 对象具有相同的值。 |
Equals(String, String) |
确定两个指定的 String 对象是否具有相同的值。 |
Equals(String, StringComparison) |
确定此字符串是否与另一个指定的 String 对象具有相同的值。 参数指定区域性、大小写以及比较所用的排序规则。 |
Equals(String, String, StringComparison) |
确定两个指定的 String 对象是否具有相同的值。 参数指定区域性、大小写以及比较所用的排序规则。 |
Equals(Object)
- Source:
- String.Comparison.cs
- Source:
- String.Comparison.cs
- Source:
- String.Comparison.cs
确定此实例是否与指定的对象(也必须是 String 对象)具有相同的值。
public:
override bool Equals(System::Object ^ obj);
public override bool Equals (object obj);
public override bool Equals (object? obj);
override this.Equals : obj -> bool
Public Overrides Function Equals (obj As Object) As Boolean
参数
- obj
- Object
要与此实例进行比较的字符串。
返回
如果 true
是一个 obj
且其值与此实例相等,则为 String;否则为 false
。 如果 obj
为 null
,则此方法返回 false
。
示例
下面的示例演示 Equals 方法。
// Sample for String::Equals(Object)
// String::Equals(String)
// String::Equals(String, String)
using namespace System;
using namespace System::Text;
int main()
{
StringBuilder^ sb = gcnew StringBuilder( "abcd" );
String^ str1 = "abcd";
String^ str2 = nullptr;
Object^ o2 = nullptr;
Console::WriteLine();
Console::WriteLine( " * The value of String str1 is '{0}'.", str1 );
Console::WriteLine( " * The value of StringBuilder sb is '{0}'.", sb );
Console::WriteLine();
Console::WriteLine( "1a) String::Equals(Object). Object is a StringBuilder, not a String." );
Console::WriteLine( " Is str1 equal to sb?: {0}", str1->Equals( sb ) );
Console::WriteLine();
Console::WriteLine( "1b) String::Equals(Object). Object is a String." );
str2 = sb->ToString();
o2 = str2;
Console::WriteLine( " * The value of Object o2 is '{0}'.", o2 );
Console::WriteLine( " Is str1 equal to o2?: {0}", str1->Equals( o2 ) );
Console::WriteLine();
Console::WriteLine( " 2) String::Equals(String)" );
Console::WriteLine( " * The value of String str2 is '{0}'.", str2 );
Console::WriteLine( " Is str1 equal to str2?: {0}", str1->Equals( str2 ) );
Console::WriteLine();
Console::WriteLine( " 3) String::Equals(String, String)" );
Console::WriteLine( " Is str1 equal to str2?: {0}", String::Equals( str1, str2 ) );
}
/*
This example produces the following results:
* The value of String str1 is 'abcd'.
* The value of StringBuilder sb is 'abcd'.
1a) String::Equals(Object). Object is a StringBuilder, not a String.
Is str1 equal to sb?: False
1b) String::Equals(Object). Object is a String.
* The value of Object o2 is 'abcd'.
Is str1 equal to o2?: True
2) String::Equals(String)
* The value of String str2 is 'abcd'.
Is str1 equal to str2?: True
3) String::Equals(String, String)
Is str1 equal to str2?: True
*/
// Sample for String.Equals(Object)
// String.Equals(String)
// String.Equals(String, String)
using System;
using System.Text;
class Sample1
{
public static void Main()
{
StringBuilder sb = new StringBuilder("abcd");
String str1 = "abcd";
String str2 = null;
Object o2 = null;
Console.WriteLine();
Console.WriteLine(" * The value of String str1 is '{0}'.", str1);
Console.WriteLine(" * The value of StringBuilder sb is '{0}'.", sb.ToString());
Console.WriteLine();
Console.WriteLine("1a) String.Equals(Object). Object is a StringBuilder, not a String.");
Console.WriteLine(" Is str1 equal to sb?: {0}", str1.Equals(sb));
Console.WriteLine();
Console.WriteLine("1b) String.Equals(Object). Object is a String.");
str2 = sb.ToString();
o2 = str2;
Console.WriteLine(" * The value of Object o2 is '{0}'.", o2);
Console.WriteLine(" Is str1 equal to o2?: {0}", str1.Equals(o2));
Console.WriteLine();
Console.WriteLine(" 2) String.Equals(String)");
Console.WriteLine(" * The value of String str2 is '{0}'.", str2);
Console.WriteLine(" Is str1 equal to str2?: {0}", str1.Equals(str2));
Console.WriteLine();
Console.WriteLine(" 3) String.Equals(String, String)");
Console.WriteLine(" Is str1 equal to str2?: {0}", String.Equals(str1, str2));
}
}
/*
This example produces the following results:
* The value of String str1 is 'abcd'.
* The value of StringBuilder sb is 'abcd'.
1a) String.Equals(Object). Object is a StringBuilder, not a String.
Is str1 equal to sb?: False
1b) String.Equals(Object). Object is a String.
* The value of Object o2 is 'abcd'.
Is str1 equal to o2?: True
2) String.Equals(String)
* The value of String str2 is 'abcd'.
Is str1 equal to str2?: True
3) String.Equals(String, String)
Is str1 equal to str2?: True
*/
// Sample for String.Equals(Object)
// String.Equals(String)
// String.Equals(String, String)
open System
open System.Text
let sb = StringBuilder "abcd"
let str1 = "abcd"
let str2 = string sb
let o2: obj = str2
printfn $"""
* The value of String str1 is '{str1}'.
* The value of StringBuilder sb is '{sb}'.
1a) String.Equals(Object). Object is a StringBuilder, not a String.
Is str1 equal to sb?: {str1.Equals sb}"
1b) String.Equals(Object). Object is a String.
* The value of Object o2 is '{o2}'.
Is str1 equal to o2?: {str1.Equals o2}
2) String.Equals(String)
* The value of String str2 is '{str2}'.
Is str1 equal to str2?: {str1.Equals str2}
3) String.Equals(String, String)
Is str1 equal to str2?: {String.Equals(str1, str2)}"""
(*
This example produces the following results:
* The value of String str1 is 'abcd'.
* The value of StringBuilder sb is 'abcd'.
1a) String.Equals(Object). Object is a StringBuilder, not a String.
Is str1 equal to sb?: False
1b) String.Equals(Object). Object is a String.
* The value of Object o2 is 'abcd'.
Is str1 equal to o2?: True
2) String.Equals(String)
* The value of String str2 is 'abcd'.
Is str1 equal to str2?: True
3) String.Equals(String, String)
Is str1 equal to str2?: True
*)
' Sample for String.Equals(Object)
' String.Equals(String)
' String.Equals(String, String)
Imports System.Text
Class Sample
Public Shared Sub Main()
Dim sb As New StringBuilder("abcd")
Dim str1 As [String] = "abcd"
Dim str2 As [String] = Nothing
Dim o2 As [Object] = Nothing
Console.WriteLine()
Console.WriteLine(" * The value of String str1 is '{0}'.", str1)
Console.WriteLine(" * The value of StringBuilder sb is '{0}'.", sb.ToString())
Console.WriteLine()
Console.WriteLine("1a) String.Equals(Object). Object is a StringBuilder, not a String.")
Console.WriteLine(" Is str1 equal to sb?: {0}", str1.Equals(sb))
Console.WriteLine()
Console.WriteLine("1b) String.Equals(Object). Object is a String.")
str2 = sb.ToString()
o2 = str2
Console.WriteLine(" * The value of Object o2 is '{0}'.", o2)
Console.WriteLine(" Is str1 equal to o2?: {0}", str1.Equals(o2))
Console.WriteLine()
Console.WriteLine(" 2) String.Equals(String)")
Console.WriteLine(" * The value of String str2 is '{0}'.", str2)
Console.WriteLine(" Is str1 equal to str2?: {0}", str1.Equals(str2))
Console.WriteLine()
Console.WriteLine(" 3) String.Equals(String, String)")
Console.WriteLine(" Is str1 equal to str2?: {0}", [String].Equals(str1, str2))
End Sub
End Class
'
'This example produces the following results:
'
' * The value of String str1 is 'abcd'.
' * The value of StringBuilder sb is 'abcd'.
'
'1a) String.Equals(Object). Object is a StringBuilder, not a String.
' Is str1 equal to sb?: False
'
'1b) String.Equals(Object). Object is a String.
' * The value of Object o2 is 'abcd'.
' Is str1 equal to o2?: True
'
' 2) String.Equals(String)
' * The value of String str2 is 'abcd'.
' Is str1 equal to str2?: True
'
' 3) String.Equals(String, String)
' Is str1 equal to str2?: True
'
注解
此方法执行序号 (区分大小写和不区分区域性的) 比较。
另请参阅
适用于
Equals(String)
- Source:
- String.Comparison.cs
- Source:
- String.Comparison.cs
- Source:
- String.Comparison.cs
确定此实例是否与另一个指定的 String 对象具有相同的值。
public:
virtual bool Equals(System::String ^ value);
public:
bool Equals(System::String ^ value);
public bool Equals (string value);
public bool Equals (string? value);
override this.Equals : string -> bool
Public Function Equals (value As String) As Boolean
参数
- value
- String
要与此实例进行比较的字符串。
返回
如果 true
参数的值与此实例的值相同,则为 value
;否则为 false
。 如果 value
为 null
,则此方法返回 false
。
实现
示例
下面的示例演示 Equals 方法。 它将标题大小写单词“File”与等效字词、小写等效词、大写等效词和包含拉丁文小写字母 DOTLESS I (U+0131) 而不是拉丁文小写字母 I (U+0069) 进行比较。
Equals(String)由于 方法执行序号比较,因此只有具有相同单词的比较返回 true
。
using System;
public class Example
{
public static void Main()
{
Console.OutputEncoding = System.Text.Encoding.UTF8;
string word = "File";
string[] others = { word.ToLower(), word, word.ToUpper(), "Fıle" };
foreach (string other in others)
{
if (word.Equals(other))
Console.WriteLine("{0} = {1}", word, other);
else
Console.WriteLine("{0} {1} {2}", word, '\u2260', other);
}
}
}
// The example displays the following output:
// File ≠ file
// File = File
// File ≠ FILE
// File ≠ Fıle
open System
Console.OutputEncoding <- Text.Encoding.UTF8
let word = "File"
let others = [| word.ToLower(); word; word.ToUpper(); "Fıle" |]
for other in others do
if word.Equals other then
printfn $"{word} = {other}"
else
printfn $"{word} \u2260 {other}"
// The example displays the following output:
// File ≠ file
// File = File
// File ≠ FILE
// File ≠ Fıle
Module Example
Public Sub Main()
Console.OutputEncoding = System.Text.Encoding.UTF8
Dim word As String = "File"
Dim others() As String = { word.ToLower(), word, word.ToUpper(), _
"Fıle" }
For Each other As String In others
If word.Equals(other) Then
Console.WriteLine("{0} = {1}", word, other)
Else
Console.WriteLine("{0} {1} {2}", word, ChrW(&H2260), other)
End If
Next
End Sub
End Module
' The example displays the following output:
' File ≠ file
' File = File
' File ≠ FILE
' File ≠ Fıle
注解
此方法执行序号 (区分大小写和不区分区域性的) 比较。
另请参阅
适用于
Equals(String, String)
- Source:
- String.Comparison.cs
- Source:
- String.Comparison.cs
- Source:
- String.Comparison.cs
确定两个指定的 String 对象是否具有相同的值。
public:
static bool Equals(System::String ^ a, System::String ^ b);
public static bool Equals (string a, string b);
public static bool Equals (string? a, string? b);
static member Equals : string * string -> bool
Public Shared Function Equals (a As String, b As String) As Boolean
参数
- a
- String
要比较的第一个字符串,或 null
。
- b
- String
要比较的第二个字符串,或 null
。
返回
如果 a
的值与 b
的值相同,则为 true
;否则为 false
。 如果 a
和 b
均为 null
,此方法将返回 true
。
示例
下面的示例演示 Equals 方法。
// Sample for String::Equals(Object)
// String::Equals(String)
// String::Equals(String, String)
using namespace System;
using namespace System::Text;
int main()
{
StringBuilder^ sb = gcnew StringBuilder( "abcd" );
String^ str1 = "abcd";
String^ str2 = nullptr;
Object^ o2 = nullptr;
Console::WriteLine();
Console::WriteLine( " * The value of String str1 is '{0}'.", str1 );
Console::WriteLine( " * The value of StringBuilder sb is '{0}'.", sb );
Console::WriteLine();
Console::WriteLine( "1a) String::Equals(Object). Object is a StringBuilder, not a String." );
Console::WriteLine( " Is str1 equal to sb?: {0}", str1->Equals( sb ) );
Console::WriteLine();
Console::WriteLine( "1b) String::Equals(Object). Object is a String." );
str2 = sb->ToString();
o2 = str2;
Console::WriteLine( " * The value of Object o2 is '{0}'.", o2 );
Console::WriteLine( " Is str1 equal to o2?: {0}", str1->Equals( o2 ) );
Console::WriteLine();
Console::WriteLine( " 2) String::Equals(String)" );
Console::WriteLine( " * The value of String str2 is '{0}'.", str2 );
Console::WriteLine( " Is str1 equal to str2?: {0}", str1->Equals( str2 ) );
Console::WriteLine();
Console::WriteLine( " 3) String::Equals(String, String)" );
Console::WriteLine( " Is str1 equal to str2?: {0}", String::Equals( str1, str2 ) );
}
/*
This example produces the following results:
* The value of String str1 is 'abcd'.
* The value of StringBuilder sb is 'abcd'.
1a) String::Equals(Object). Object is a StringBuilder, not a String.
Is str1 equal to sb?: False
1b) String::Equals(Object). Object is a String.
* The value of Object o2 is 'abcd'.
Is str1 equal to o2?: True
2) String::Equals(String)
* The value of String str2 is 'abcd'.
Is str1 equal to str2?: True
3) String::Equals(String, String)
Is str1 equal to str2?: True
*/
// Sample for String.Equals(Object)
// String.Equals(String)
// String.Equals(String, String)
using System;
using System.Text;
class Sample1
{
public static void Main()
{
StringBuilder sb = new StringBuilder("abcd");
String str1 = "abcd";
String str2 = null;
Object o2 = null;
Console.WriteLine();
Console.WriteLine(" * The value of String str1 is '{0}'.", str1);
Console.WriteLine(" * The value of StringBuilder sb is '{0}'.", sb.ToString());
Console.WriteLine();
Console.WriteLine("1a) String.Equals(Object). Object is a StringBuilder, not a String.");
Console.WriteLine(" Is str1 equal to sb?: {0}", str1.Equals(sb));
Console.WriteLine();
Console.WriteLine("1b) String.Equals(Object). Object is a String.");
str2 = sb.ToString();
o2 = str2;
Console.WriteLine(" * The value of Object o2 is '{0}'.", o2);
Console.WriteLine(" Is str1 equal to o2?: {0}", str1.Equals(o2));
Console.WriteLine();
Console.WriteLine(" 2) String.Equals(String)");
Console.WriteLine(" * The value of String str2 is '{0}'.", str2);
Console.WriteLine(" Is str1 equal to str2?: {0}", str1.Equals(str2));
Console.WriteLine();
Console.WriteLine(" 3) String.Equals(String, String)");
Console.WriteLine(" Is str1 equal to str2?: {0}", String.Equals(str1, str2));
}
}
/*
This example produces the following results:
* The value of String str1 is 'abcd'.
* The value of StringBuilder sb is 'abcd'.
1a) String.Equals(Object). Object is a StringBuilder, not a String.
Is str1 equal to sb?: False
1b) String.Equals(Object). Object is a String.
* The value of Object o2 is 'abcd'.
Is str1 equal to o2?: True
2) String.Equals(String)
* The value of String str2 is 'abcd'.
Is str1 equal to str2?: True
3) String.Equals(String, String)
Is str1 equal to str2?: True
*/
// Sample for String.Equals(Object)
// String.Equals(String)
// String.Equals(String, String)
open System
open System.Text
let sb = StringBuilder "abcd"
let str1 = "abcd"
let str2 = string sb
let o2: obj = str2
printfn $"""
* The value of String str1 is '{str1}'.
* The value of StringBuilder sb is '{sb}'.
1a) String.Equals(Object). Object is a StringBuilder, not a String.
Is str1 equal to sb?: {str1.Equals sb}"
1b) String.Equals(Object). Object is a String.
* The value of Object o2 is '{o2}'.
Is str1 equal to o2?: {str1.Equals o2}
2) String.Equals(String)
* The value of String str2 is '{str2}'.
Is str1 equal to str2?: {str1.Equals str2}
3) String.Equals(String, String)
Is str1 equal to str2?: {String.Equals(str1, str2)}"""
(*
This example produces the following results:
* The value of String str1 is 'abcd'.
* The value of StringBuilder sb is 'abcd'.
1a) String.Equals(Object). Object is a StringBuilder, not a String.
Is str1 equal to sb?: False
1b) String.Equals(Object). Object is a String.
* The value of Object o2 is 'abcd'.
Is str1 equal to o2?: True
2) String.Equals(String)
* The value of String str2 is 'abcd'.
Is str1 equal to str2?: True
3) String.Equals(String, String)
Is str1 equal to str2?: True
*)
' Sample for String.Equals(Object)
' String.Equals(String)
' String.Equals(String, String)
Imports System.Text
Class Sample
Public Shared Sub Main()
Dim sb As New StringBuilder("abcd")
Dim str1 As [String] = "abcd"
Dim str2 As [String] = Nothing
Dim o2 As [Object] = Nothing
Console.WriteLine()
Console.WriteLine(" * The value of String str1 is '{0}'.", str1)
Console.WriteLine(" * The value of StringBuilder sb is '{0}'.", sb.ToString())
Console.WriteLine()
Console.WriteLine("1a) String.Equals(Object). Object is a StringBuilder, not a String.")
Console.WriteLine(" Is str1 equal to sb?: {0}", str1.Equals(sb))
Console.WriteLine()
Console.WriteLine("1b) String.Equals(Object). Object is a String.")
str2 = sb.ToString()
o2 = str2
Console.WriteLine(" * The value of Object o2 is '{0}'.", o2)
Console.WriteLine(" Is str1 equal to o2?: {0}", str1.Equals(o2))
Console.WriteLine()
Console.WriteLine(" 2) String.Equals(String)")
Console.WriteLine(" * The value of String str2 is '{0}'.", str2)
Console.WriteLine(" Is str1 equal to str2?: {0}", str1.Equals(str2))
Console.WriteLine()
Console.WriteLine(" 3) String.Equals(String, String)")
Console.WriteLine(" Is str1 equal to str2?: {0}", [String].Equals(str1, str2))
End Sub
End Class
'
'This example produces the following results:
'
' * The value of String str1 is 'abcd'.
' * The value of StringBuilder sb is 'abcd'.
'
'1a) String.Equals(Object). Object is a StringBuilder, not a String.
' Is str1 equal to sb?: False
'
'1b) String.Equals(Object). Object is a String.
' * The value of Object o2 is 'abcd'.
' Is str1 equal to o2?: True
'
' 2) String.Equals(String)
' * The value of String str2 is 'abcd'.
' Is str1 equal to str2?: True
'
' 3) String.Equals(String, String)
' Is str1 equal to str2?: True
'
注解
此方法执行序号 (区分大小写和不区分区域性的) 比较。
另请参阅
适用于
Equals(String, StringComparison)
- Source:
- String.Comparison.cs
- Source:
- String.Comparison.cs
- Source:
- String.Comparison.cs
确定此字符串是否与另一个指定的 String 对象具有相同的值。 参数指定区域性、大小写以及比较所用的排序规则。
public:
bool Equals(System::String ^ value, StringComparison comparisonType);
public bool Equals (string value, StringComparison comparisonType);
public bool Equals (string? value, StringComparison comparisonType);
override this.Equals : string * StringComparison -> bool
Public Function Equals (value As String, comparisonType As StringComparison) As Boolean
参数
- value
- String
要与此实例进行比较的字符串。
- comparisonType
- StringComparison
枚举值之一,用于指定如何比较字符串。
返回
如果 true
参数的值与此字符串相同,则为 value
;否则为 false
。
例外
comparisonType
不是 StringComparison 值。
示例
以下示例创建一个由大写“I”、小写“i”和无点“ı”组成的字符串数组。 然后, Equals(String, StringComparison) 它调用 方法以使用每个可能的 StringComparison 枚举值对其进行比较。
using System;
class Sample
{
public static void Main()
{
// Define a string array with the following three "I" characters:
// U+0069, U+0131, and U+0049.
string[] threeIs = { "i", "ı", "I" };
// Define Type object representing StringComparison type.
Type scType = typeof(StringComparison);
// Show the current culture (for culture-sensitive string comparisons).
Console.WriteLine("The current culture is {0}.\n",
System.Globalization.CultureInfo.CurrentCulture.Name);
// Perform comparisons using each StringComparison member.
foreach (string scName in Enum.GetNames(scType))
{
StringComparison sc = (StringComparison) Enum.Parse(scType, scName);
Console.WriteLine("Comparisons using {0}:", sc);
// Compare each character in character array.
for (int ctr = 0; ctr <= 1; ctr++)
{
string instanceChar = threeIs[ctr];
for (int innerCtr = ctr + 1; innerCtr <= threeIs.GetUpperBound(0); innerCtr++)
{
string otherChar = threeIs[innerCtr];
Console.WriteLine("{0} (U+{1}) = {2} (U+{3}): {4}",
instanceChar, Convert.ToInt16(Char.Parse(instanceChar)).ToString("X4"),
otherChar, Convert.ToInt16(Char.Parse(otherChar)).ToString("X4"),
instanceChar.Equals(otherChar, sc));
}
Console.WriteLine();
}
}
}
}
// The example displays the following output:
// The current culture is en-US.
//
// Comparisons using CurrentCulture:
// i (U+0069) = ı (U+0131): False
// i (U+0069) = I (U+0049): False
//
// ı (U+0131) = I (U+0049): False
//
// Comparisons using CurrentCultureIgnoreCase:
// i (U+0069) = ı (U+0131): False
// i (U+0069) = I (U+0049): True
//
// ı (U+0131) = I (U+0049): False
//
// Comparisons using InvariantCulture:
// i (U+0069) = ı (U+0131): False
// i (U+0069) = I (U+0049): False
//
// ı (U+0131) = I (U+0049): False
//
// Comparisons using InvariantCultureIgnoreCase:
// i (U+0069) = ı (U+0131): False
// i (U+0069) = I (U+0049): True
//
// ı (U+0131) = I (U+0049): False
//
// Comparisons using Ordinal:
// i (U+0069) = ı (U+0131): False
// i (U+0069) = I (U+0049): False
//
// ı (U+0131) = I (U+0049): False
//
// Comparisons using OrdinalIgnoreCase:
// i (U+0069) = ı (U+0131): False
// i (U+0069) = I (U+0049): True
//
// ı (U+0131) = I (U+0049): False
open System
open System.Globalization
// Define a string array with the following three "I" characters:
// U+0069, U+0131, and U+0049.
let threeIs = [| "i"; "ı"; "I" |]
// Define Type object representing StringComparison type.
let scType = typeof<StringComparison>
// Show the current culture (for culture-sensitive string comparisons).
printfn $"The current culture is {CultureInfo.CurrentCulture.Name}.\n"
// Perform comparisons using each StringComparison member.
for scName in Enum.GetNames scType do
let sc = Enum.Parse(scType, scName) :?> StringComparison
printfn $"Comparisons using {sc}:"
// Compare each character in character array.
for ctr = 0 to 1 do
let instanceChar = threeIs[ctr]
for innerCtr = ctr + 1 to threeIs.GetUpperBound 0 do
let otherChar = threeIs[innerCtr]
printfn $"{instanceChar} (U+{Convert.ToInt16(Char.Parse instanceChar):X4}) = {otherChar} (U+{Convert.ToInt16(Char.Parse otherChar):X4}): {instanceChar.Equals(otherChar, sc)}"
printfn ""
// The example displays the following output:
// The current culture is en-US.
//
// Comparisons using CurrentCulture:
// i (U+0069) = i (U+0131): False
// i (U+0069) = I (U+0049): False
//
// i (U+0131) = I (U+0049): False
//
// Comparisons using CurrentCultureIgnoreCase:
// i (U+0069) = i (U+0131): False
// i (U+0069) = I (U+0049): True
//
// i (U+0131) = I (U+0049): False
//
// Comparisons using InvariantCulture:
// i (U+0069) = i (U+0131): False
// i (U+0069) = I (U+0049): False
//
// i (U+0131) = I (U+0049): False
//
// Comparisons using InvariantCultureIgnoreCase:
// i (U+0069) = i (U+0131): False
// i (U+0069) = I (U+0049): True
//
// i (U+0131) = I (U+0049): False
//
// Comparisons using Ordinal:
// i (U+0069) = i (U+0131): False
// i (U+0069) = I (U+0049): False
//
// i (U+0131) = I (U+0049): False
//
// Comparisons using OrdinalIgnoreCase:
// i (U+0069) = i (U+0131): False
// i (U+0069) = I (U+0049): True
//
// i (U+0131) = I (U+0049): False
Class Sample
Public Shared Sub Main()
' Define a string array with the following three "I" characters:
' U+0069, U+0131, and U+0049.
Dim threeIs() As String = { "i", "ı", "I" }
' Define Type object representing StringComparison type.
Dim scType As Type = GetType(StringComparison)
' Show the current culture (for culture-sensitive string comparisons).
Console.WriteLine("The current culture is {0}." & vbCrLf, _
System.Globalization.CultureInfo.CurrentCulture.Name)
' Perform comparisons using each StringComparison member.
For Each scName As String In [Enum].GetNames(scType)
Dim sc As StringComparison = [Enum].Parse(scType, scName)
Console.WriteLine("Comparisons using {0}:", sc)
' Compare each character in character array.
For ctr As Integer = 0 To 1
Dim instanceChar As String = threeIs(ctr)
For innerCtr As Integer = ctr + 1 To threeIs.GetUpperBound(0)
Dim otherChar As STring = threeIs(innerCtr)
Console.WriteLine("{0} (U+{1}) = {2} (U+{3}): {4}", _
instanceChar, Convert.ToInt16(Char.Parse(instanceChar)).ToString("X4"), _
otherChar, Convert.ToInt16(Char.Parse(otherChar)).ToString("X4"), _
instanceChar.Equals(otherChar, sc))
Next
Console.WriteLine()
Next
Next
End Sub
End Class
' The example displays the following output:
' The current culture is en-US.
'
' Comparisons using CurrentCulture:
' i (U+0069) = i (U+0131): False
' i (U+0069) = I (U+0049): False
'
' i (U+0131) = I (U+0049): False
'
' Comparisons using CurrentCultureIgnoreCase:
' i (U+0069) = i (U+0131): False
' i (U+0069) = I (U+0049): True
'
' i (U+0131) = I (U+0049): False
'
' Comparisons using InvariantCulture:
' i (U+0069) = i (U+0131): False
' i (U+0069) = I (U+0049): False
'
' i (U+0131) = I (U+0049): False
'
' Comparisons using InvariantCultureIgnoreCase:
' i (U+0069) = i (U+0131): False
' i (U+0069) = I (U+0049): True
'
' i (U+0131) = I (U+0049): False
'
' Comparisons using Ordinal:
' i (U+0069) = i (U+0131): False
' i (U+0069) = I (U+0049): False
'
' i (U+0131) = I (U+0049): False
'
' Comparisons using OrdinalIgnoreCase:
' i (U+0069) = i (U+0131): False
' i (U+0069) = I (U+0049): True
'
' i (U+0131) = I (U+0049): False
注解
参数 comparisonType
指示比较是应使用当前区域性还是固定区域性、遵循或忽略要比较的两个字符串的事例,还是使用单词或序号排序规则。
另请参阅
适用于
Equals(String, String, StringComparison)
- Source:
- String.Comparison.cs
- Source:
- String.Comparison.cs
- Source:
- String.Comparison.cs
确定两个指定的 String 对象是否具有相同的值。 参数指定区域性、大小写以及比较所用的排序规则。
public:
static bool Equals(System::String ^ a, System::String ^ b, StringComparison comparisonType);
public static bool Equals (string a, string b, StringComparison comparisonType);
public static bool Equals (string? a, string? b, StringComparison comparisonType);
static member Equals : string * string * StringComparison -> bool
Public Shared Function Equals (a As String, b As String, comparisonType As StringComparison) As Boolean
参数
- a
- String
要比较的第一个字符串,或 null
。
- b
- String
要比较的第二个字符串,或 null
。
- comparisonType
- StringComparison
枚举值之一,用于指定比较的规则。
返回
如果 true
参数的值与 a
参数的值相同,则为 b
;否则为 false
。
例外
comparisonType
不是 StringComparison 值。
示例
以下示例使用 枚举的每个成员 StringComparison 比较三组字符串。 比较使用英语 (美国) 、泰语 (泰国) 和土耳其 (土耳其) 文化的约定。 请注意,字符串“a”和“a-”在“th-TH”区域性中被视为等效,但在其他区域性中则不相等,而在“tr-TR”区域性中,当大小写被忽略但不在其他区域性中,则“i”和“İ”被视为等效。
using System;
using System.Globalization;
using System.Threading;
public class Example3
{
public static void Main()
{
String[] cultureNames = { "en-US", "th-TH", "tr-TR" };
String[] strings1 = { "a", "i", "case", };
String[] strings2 = { "a-", "\u0130", "Case" };
StringComparison[] comparisons = (StringComparison[])Enum.GetValues(typeof(StringComparison));
foreach (var cultureName in cultureNames)
{
Thread.CurrentThread.CurrentCulture = CultureInfo.CreateSpecificCulture(cultureName);
Console.WriteLine("Current Culture: {0}", CultureInfo.CurrentCulture.Name);
for (int ctr = 0; ctr <= strings1.GetUpperBound(0); ctr++)
{
foreach (var comparison in comparisons)
Console.WriteLine(" {0} = {1} ({2}): {3}", strings1[ctr],
strings2[ctr], comparison,
String.Equals(strings1[ctr], strings2[ctr], comparison));
Console.WriteLine();
}
Console.WriteLine();
}
}
}
// The example displays the following output:
// Current Culture: en-US
// a = a- (CurrentCulture): False
// a = a- (CurrentCultureIgnoreCase): False
// a = a- (InvariantCulture): False
// a = a- (InvariantCultureIgnoreCase): False
// a = a- (Ordinal): False
// a = a- (OrdinalIgnoreCase): False
//
// i = İ (CurrentCulture): False
// i = İ (CurrentCultureIgnoreCase): False
// i = İ (InvariantCulture): False
// i = İ (InvariantCultureIgnoreCase): False
// i = İ (Ordinal): False
// i = İ (OrdinalIgnoreCase): False
//
// case = Case (CurrentCulture): False
// case = Case (CurrentCultureIgnoreCase): True
// case = Case (InvariantCulture): False
// case = Case (InvariantCultureIgnoreCase): True
// case = Case (Ordinal): False
// case = Case (OrdinalIgnoreCase): True
//
//
// Current Culture: th-TH
// a = a- (CurrentCulture): True
// a = a- (CurrentCultureIgnoreCase): True
// a = a- (InvariantCulture): False
// a = a- (InvariantCultureIgnoreCase): False
// a = a- (Ordinal): False
// a = a- (OrdinalIgnoreCase): False
//
// i = İ (CurrentCulture): False
// i = İ (CurrentCultureIgnoreCase): False
// i = İ (InvariantCulture): False
// i = İ (InvariantCultureIgnoreCase): False
// i = İ (Ordinal): False
// i = İ (OrdinalIgnoreCase): False
//
// case = Case (CurrentCulture): False
// case = Case (CurrentCultureIgnoreCase): True
// case = Case (InvariantCulture): False
// case = Case (InvariantCultureIgnoreCase): True
// case = Case (Ordinal): False
// case = Case (OrdinalIgnoreCase): True
//
//
// Current Culture: tr-TR
// a = a- (CurrentCulture): False
// a = a- (CurrentCultureIgnoreCase): False
// a = a- (InvariantCulture): False
// a = a- (InvariantCultureIgnoreCase): False
// a = a- (Ordinal): False
// a = a- (OrdinalIgnoreCase): False
//
// i = İ (CurrentCulture): False
// i = İ (CurrentCultureIgnoreCase): True
// i = İ (InvariantCulture): False
// i = İ (InvariantCultureIgnoreCase): False
// i = İ (Ordinal): False
// i = İ (OrdinalIgnoreCase): False
//
// case = Case (CurrentCulture): False
// case = Case (CurrentCultureIgnoreCase): True
// case = Case (InvariantCulture): False
// case = Case (InvariantCultureIgnoreCase): True
// case = Case (Ordinal): False
// case = Case (OrdinalIgnoreCase): True
open System
open System.Globalization
open System.Threading
let cultureNames =
[| "en-US"; "se-SE" |]
let strings1 =
[| "case"; "encyclopædia"
"encyclopædia"; "Archæology" |]
let strings2 =
[| "Case"; "encyclopaedia"
"encyclopedia"; "ARCHÆOLOGY" |]
let comparisons =
Enum.GetValues typeof<StringComparison> :?> StringComparison[]
for cultureName in cultureNames do
Thread.CurrentThread.CurrentCulture <- CultureInfo.CreateSpecificCulture cultureName
printfn $"Current Culture: {CultureInfo.CurrentCulture.Name}"
for i = 0 to strings1.GetUpperBound 0 do
for comparison in comparisons do
printfn $" {strings1[i]} = {strings2[i]} ({comparison}): {String.Equals(strings1[i], strings2[i], comparison)}"
printfn ""
printfn ""
// The example displays the following output:
// Current Culture: en-US
// case = Case (CurrentCulture): False
// case = Case (CurrentCultureIgnoreCase): True
// case = Case (InvariantCulture): False
// case = Case (InvariantCultureIgnoreCase): True
// case = Case (Ordinal): False
// case = Case (OrdinalIgnoreCase): True
//
// encyclopædia = encyclopaedia (CurrentCulture): True
// encyclopædia = encyclopaedia (CurrentCultureIgnoreCase): True
// encyclopædia = encyclopaedia (InvariantCulture): True
// encyclopædia = encyclopaedia (InvariantCultureIgnoreCase): True
// encyclopædia = encyclopaedia (Ordinal): False
// encyclopædia = encyclopaedia (OrdinalIgnoreCase): False
//
// encyclopædia = encyclopedia (CurrentCulture): False
// encyclopædia = encyclopedia (CurrentCultureIgnoreCase): False
// encyclopædia = encyclopedia (InvariantCulture): False
// encyclopædia = encyclopedia (InvariantCultureIgnoreCase): False
// encyclopædia = encyclopedia (Ordinal): False
// encyclopædia = encyclopedia (OrdinalIgnoreCase): False
//
// Archæology = ARCHÆOLOGY (CurrentCulture): False
// Archæology = ARCHÆOLOGY (CurrentCultureIgnoreCase): True
// Archæology = ARCHÆOLOGY (InvariantCulture): False
// Archæology = ARCHÆOLOGY (InvariantCultureIgnoreCase): True
// Archæology = ARCHÆOLOGY (Ordinal): False
// Archæology = ARCHÆOLOGY (OrdinalIgnoreCase): True
//
//
// Current Culture: se-SE
// case = Case (CurrentCulture): False
// case = Case (CurrentCultureIgnoreCase): True
// case = Case (InvariantCulture): False
// case = Case (InvariantCultureIgnoreCase): True
// case = Case (Ordinal): False
// case = Case (OrdinalIgnoreCase): True
//
// encyclopædia = encyclopaedia (CurrentCulture): False
// encyclopædia = encyclopaedia (CurrentCultureIgnoreCase): False
// encyclopædia = encyclopaedia (InvariantCulture): True
// encyclopædia = encyclopaedia (InvariantCultureIgnoreCase): True
// encyclopædia = encyclopaedia (Ordinal): False
// encyclopædia = encyclopaedia (OrdinalIgnoreCase): False
//
// encyclopædia = encyclopedia (CurrentCulture): False
// encyclopædia = encyclopedia (CurrentCultureIgnoreCase): False
// encyclopædia = encyclopedia (InvariantCulture): False
// encyclopædia = encyclopedia (InvariantCultureIgnoreCase): False
// encyclopædia = encyclopedia (Ordinal): False
// encyclopædia = encyclopedia (OrdinalIgnoreCase): False
//
// Archæology = ARCHÆOLOGY (CurrentCulture): False
// Archæology = ARCHÆOLOGY (CurrentCultureIgnoreCase): True
// Archæology = ARCHÆOLOGY (InvariantCulture): False
// Archæology = ARCHÆOLOGY (InvariantCultureIgnoreCase): True
// Archæology = ARCHÆOLOGY (Ordinal): False
// Archæology = ARCHÆOLOGY (OrdinalIgnoreCase): True
Imports System.Globalization
Imports System.Threading
Module Example
Public Sub Main()
Dim cultureNames() As String = { "en-US", "se-SE" }
Dim strings1() As String = { "case", "encyclopædia",
"encyclopædia", "Archæology" }
Dim strings2() As String = { "Case", "encyclopaedia",
"encyclopedia" , "ARCHÆOLOGY" }
Dim comparisons() As StringComparison = CType([Enum].GetValues(GetType(StringComparison)),
StringComparison())
For Each cultureName In cultureNames
Thread.CurrentThread.CurrentCulture = CultureInfo.CreateSpecificCulture(cultureName)
Console.WriteLine("Current Culture: {0}", CultureInfo.CurrentCulture.Name)
For ctr As Integer = 0 To strings1.GetUpperBound(0)
For Each comparison In comparisons
Console.WriteLine(" {0} = {1} ({2}): {3}", strings1(ctr),
strings2(ctr), comparison,
String.Equals(strings1(ctr), strings2(ctr), comparison))
Next
Console.WriteLine()
Next
Console.WriteLine()
Next
End Sub
End Module
' The example displays the following output:
' Current Culture: en-US
' case = Case (CurrentCulture): False
' case = Case (CurrentCultureIgnoreCase): True
' case = Case (InvariantCulture): False
' case = Case (InvariantCultureIgnoreCase): True
' case = Case (Ordinal): False
' case = Case (OrdinalIgnoreCase): True
'
' encyclopædia = encyclopaedia (CurrentCulture): True
' encyclopædia = encyclopaedia (CurrentCultureIgnoreCase): True
' encyclopædia = encyclopaedia (InvariantCulture): True
' encyclopædia = encyclopaedia (InvariantCultureIgnoreCase): True
' encyclopædia = encyclopaedia (Ordinal): False
' encyclopædia = encyclopaedia (OrdinalIgnoreCase): False
'
' encyclopædia = encyclopedia (CurrentCulture): False
' encyclopædia = encyclopedia (CurrentCultureIgnoreCase): False
' encyclopædia = encyclopedia (InvariantCulture): False
' encyclopædia = encyclopedia (InvariantCultureIgnoreCase): False
' encyclopædia = encyclopedia (Ordinal): False
' encyclopædia = encyclopedia (OrdinalIgnoreCase): False
'
' Archæology = ARCHÆOLOGY (CurrentCulture): False
' Archæology = ARCHÆOLOGY (CurrentCultureIgnoreCase): True
' Archæology = ARCHÆOLOGY (InvariantCulture): False
' Archæology = ARCHÆOLOGY (InvariantCultureIgnoreCase): True
' Archæology = ARCHÆOLOGY (Ordinal): False
' Archæology = ARCHÆOLOGY (OrdinalIgnoreCase): True
'
'
' Current Culture: se-SE
' case = Case (CurrentCulture): False
' case = Case (CurrentCultureIgnoreCase): True
' case = Case (InvariantCulture): False
' case = Case (InvariantCultureIgnoreCase): True
' case = Case (Ordinal): False
' case = Case (OrdinalIgnoreCase): True
'
' encyclopædia = encyclopaedia (CurrentCulture): False
' encyclopædia = encyclopaedia (CurrentCultureIgnoreCase): False
' encyclopædia = encyclopaedia (InvariantCulture): True
' encyclopædia = encyclopaedia (InvariantCultureIgnoreCase): True
' encyclopædia = encyclopaedia (Ordinal): False
' encyclopædia = encyclopaedia (OrdinalIgnoreCase): False
'
' encyclopædia = encyclopedia (CurrentCulture): False
' encyclopædia = encyclopedia (CurrentCultureIgnoreCase): False
' encyclopædia = encyclopedia (InvariantCulture): False
' encyclopædia = encyclopedia (InvariantCultureIgnoreCase): False
' encyclopædia = encyclopedia (Ordinal): False
' encyclopædia = encyclopedia (OrdinalIgnoreCase): False
'
' Archæology = ARCHÆOLOGY (CurrentCulture): False
' Archæology = ARCHÆOLOGY (CurrentCultureIgnoreCase): True
' Archæology = ARCHÆOLOGY (InvariantCulture): False
' Archæology = ARCHÆOLOGY (InvariantCultureIgnoreCase): True
' Archæology = ARCHÆOLOGY (Ordinal): False
' Archæology = ARCHÆOLOGY (OrdinalIgnoreCase): True
注解
参数 comparisonType
指示比较是应使用当前区域性还是固定区域性、遵循或忽略要比较的两个字符串的事例,还是使用单词或序号排序规则。