StringComparer クラス
定義
重要
一部の情報は、リリース前に大きく変更される可能性があるプレリリースされた製品に関するものです。 Microsoft は、ここに記載されている情報について、明示または黙示を問わず、一切保証しません。
大文字と小文字の区別、およびカルチャ ベースまたは序数ベースの特定の比較規則を使用する文字列比較操作を表します。
public ref class StringComparer abstract : System::Collections::Generic::IComparer<System::String ^>, System::Collections::Generic::IEqualityComparer<System::String ^>, System::Collections::IComparer, System::Collections::IEqualityComparer
public abstract class StringComparer : System.Collections.Generic.IComparer<string>, System.Collections.Generic.IEqualityComparer<string>, System.Collections.IComparer, System.Collections.IEqualityComparer
[System.Runtime.InteropServices.ComVisible(true)]
[System.Serializable]
public abstract class StringComparer : System.Collections.Generic.IComparer<string>, System.Collections.Generic.IEqualityComparer<string>, System.Collections.IComparer, System.Collections.IEqualityComparer
type StringComparer = class
interface IComparer<string>
interface IEqualityComparer<string>
interface IComparer
interface IEqualityComparer
[<System.Runtime.InteropServices.ComVisible(true)>]
[<System.Serializable>]
type StringComparer = class
interface IComparer
interface IEqualityComparer
interface IComparer<string>
interface IEqualityComparer<string>
Public MustInherit Class StringComparer
Implements IComparer, IComparer(Of String), IEqualityComparer, IEqualityComparer(Of String)
- 継承
-
StringComparer
- 属性
- 実装
例
次の例では、 クラスのプロパティと Create メソッドを StringComparer 示します。 この例では、異なる StringComparer オブジェクトがラテン文字 I の 3 つのバージョンを並べ替える方法を示しています。
// This example demonstrates members of the
// System::StringComparer class.
using namespace System;
using namespace System::Collections;
using namespace System::Collections::Generic;
using namespace System::Globalization;
using namespace System::Threading;
void Display(List<String^>^ stringList, String^ title)
{
Char firstChar;
int codePoint;
Console::WriteLine(title);
for each (String^ s in stringList)
{
firstChar = s[0];
codePoint = Convert::ToInt32(firstChar);
Console::WriteLine("0x{0:x}", codePoint);
}
Console::WriteLine();
}
int main()
{
// Create a list of string.
List<String^>^ stringList = gcnew List<String^>();
// Get the tr-TR (Turkish-Turkey) culture.
CultureInfo^ turkishCulture = gcnew CultureInfo("tr-TR");
// Get the culture that is associated with the current thread.
CultureInfo^ currentCulture = Thread::CurrentThread->CurrentCulture;
// Get the standard StringComparers.
StringComparer^ invariant = StringComparer::InvariantCulture;
StringComparer^ invariantIgnoreCase =
StringComparer::InvariantCultureIgnoreCase;
StringComparer^ current = StringComparer::CurrentCulture;
StringComparer^ currentIgnoreCase =
StringComparer::CurrentCultureIgnoreCase;
StringComparer^ ordinal = StringComparer::Ordinal;
StringComparer^ ordinalIgnoreCase = StringComparer::OrdinalIgnoreCase;
// Create a StringComparer that uses the Turkish culture and ignores
// case.
StringComparer^ turkishIgnoreCase =
StringComparer::Create(turkishCulture, true);
// Define three strings consisting of different versions of the
// letter I. LATIN CAPITAL LETTER I (U+0049)
String^ capitalLetterI = "I";
// LATIN SMALL LETTER I (U+0069)
String^ smallLetterI = "i";
// LATIN SMALL LETTER DOTLESS I (U+0131)
String^ smallLetterDotlessI = L"\u0131";
// Add the three strings to the list.
stringList->Add(capitalLetterI);
stringList->Add(smallLetterI);
stringList->Add(smallLetterDotlessI);
// Display the original list order.
Display(stringList, "The original order of the list entries...");
// Sort the list using the invariant culture.
stringList->Sort(invariant);
Display(stringList, "Invariant culture...");
stringList->Sort(invariantIgnoreCase);
Display(stringList, "Invariant culture, ignore case...");
// Sort the list using the current culture.
Console::WriteLine("The current culture is \"{0}\".",
currentCulture->Name);
stringList->Sort(current);
Display(stringList, "Current culture...");
stringList->Sort(currentIgnoreCase);
Display(stringList, "Current culture, ignore case...");
// Sort the list using the ordinal value of the character code points.
stringList->Sort(ordinal);
Display(stringList, "Ordinal...");
stringList->Sort(ordinalIgnoreCase);
Display(stringList, "Ordinal, ignore case...");
// Sort the list using the Turkish culture, which treats LATIN SMALL
// LETTER DOTLESS I differently than LATIN SMALL LETTER I.
stringList->Sort(turkishIgnoreCase);
Display(stringList, "Turkish culture, ignore case...");
}
/*
This code example produces the following results:
The original order of the list entries...
0x49
0x69
0x131
Invariant culture...
0x69
0x49
0x131
Invariant culture, ignore case...
0x49
0x69
0x131
The current culture is "en-US".
Current culture...
0x69
0x49
0x131
Current culture, ignore case...
0x49
0x69
0x131
Ordinal...
0x49
0x69
0x131
Ordinal, ignore case...
0x69
0x49
0x131
Turkish culture, ignore case...
0x131
0x49
0x69
*/
// This example demonstrates members of the
// System.StringComparer class.
using System;
using System.Collections;
using System.Collections.Generic;
using System.Globalization;
using System.Threading;
class Sample
{
public static void Main()
{
// Create a list of string.
List<string> list = new List<string>();
// Get the tr-TR (Turkish-Turkey) culture.
CultureInfo turkish = new CultureInfo("tr-TR");
// Get the culture that is associated with the current thread.
CultureInfo thisCulture = Thread.CurrentThread.CurrentCulture;
// Get the standard StringComparers.
StringComparer invCmp = StringComparer.InvariantCulture;
StringComparer invICCmp = StringComparer.InvariantCultureIgnoreCase;
StringComparer currCmp = StringComparer.CurrentCulture;
StringComparer currICCmp = StringComparer.CurrentCultureIgnoreCase;
StringComparer ordCmp = StringComparer.Ordinal;
StringComparer ordICCmp = StringComparer.OrdinalIgnoreCase;
// Create a StringComparer that uses the Turkish culture and ignores case.
StringComparer turkICComp = StringComparer.Create(turkish, true);
// Define three strings consisting of different versions of the letter I.
// LATIN CAPITAL LETTER I (U+0049)
string capitalLetterI = "I";
// LATIN SMALL LETTER I (U+0069)
string smallLetterI = "i";
// LATIN SMALL LETTER DOTLESS I (U+0131)
string smallLetterDotlessI = "\u0131";
// Add the three strings to the list.
list.Add(capitalLetterI);
list.Add(smallLetterI);
list.Add(smallLetterDotlessI);
// Display the original list order.
Display(list, "The original order of the list entries...");
// Sort the list using the invariant culture.
list.Sort(invCmp);
Display(list, "Invariant culture...");
list.Sort(invICCmp);
Display(list, "Invariant culture, ignore case...");
// Sort the list using the current culture.
Console.WriteLine("The current culture is \"{0}\".", thisCulture.Name);
list.Sort(currCmp);
Display(list, "Current culture...");
list.Sort(currICCmp);
Display(list, "Current culture, ignore case...");
// Sort the list using the ordinal value of the character code points.
list.Sort(ordCmp);
Display(list, "Ordinal...");
list.Sort(ordICCmp);
Display(list, "Ordinal, ignore case...");
// Sort the list using the Turkish culture, which treats LATIN SMALL LETTER
// DOTLESS I differently than LATIN SMALL LETTER I.
list.Sort(turkICComp);
Display(list, "Turkish culture, ignore case...");
}
public static void Display(List<string> lst, string title)
{
Char c;
int codePoint;
Console.WriteLine(title);
foreach (string s in lst)
{
c = s[0];
codePoint = Convert.ToInt32(c);
Console.WriteLine("0x{0:x}", codePoint);
}
Console.WriteLine();
}
}
/*
This code example produces the following results:
The original order of the list entries...
0x49
0x69
0x131
Invariant culture...
0x69
0x49
0x131
Invariant culture, ignore case...
0x49
0x69
0x131
The current culture is "en-US".
Current culture...
0x69
0x49
0x131
Current culture, ignore case...
0x49
0x69
0x131
Ordinal...
0x49
0x69
0x131
Ordinal, ignore case...
0x69
0x49
0x131
Turkish culture, ignore case...
0x131
0x49
0x69
*/
// This example demonstrates members of the
// System.StringComparer class.
open System
open System.Globalization
open System.Threading
let display (lst: ResizeArray<string>) title =
printfn $"%s{title}"
for s in lst do
let c = s[0]
let codePoint = Convert.ToInt32 c
printfn $"0x{codePoint:x}"
printfn ""
// Create a list of string.
let list = ResizeArray()
// Get the tr-TR (Turkish-Turkey) culture.
let turkish = CultureInfo "tr-TR"
// Get the culture that is associated with the current thread.
let thisCulture = Thread.CurrentThread.CurrentCulture
// Get the standard StringComparers.
let invCmp = StringComparer.InvariantCulture
let invICCmp = StringComparer.InvariantCultureIgnoreCase
let currCmp = StringComparer.CurrentCulture
let currICCmp = StringComparer.CurrentCultureIgnoreCase
let ordCmp = StringComparer.Ordinal
let ordICCmp = StringComparer.OrdinalIgnoreCase
// Create a StringComparer that uses the Turkish culture and ignores case.
let turkICComp = StringComparer.Create(turkish, true)
// Define three strings consisting of different versions of the letter I.
// LATIN CAPITAL LETTER I (U+0049)
let capitalLetterI = "I"
// LATIN SMALL LETTER I (U+0069)
let smallLetterI = "i"
// LATIN SMALL LETTER DOTLESS I (U+0131)
let smallLetterDotlessI = "\u0131"
// Add the three strings to the list.
list.Add capitalLetterI
list.Add smallLetterI
list.Add smallLetterDotlessI
// Display the original list order.
display list "The original order of the list entries..."
// Sort the list using the invariant culture.
list.Sort invCmp
display list "Invariant culture..."
list.Sort invICCmp
display list "Invariant culture, ignore case..."
// Sort the list using the current culture.
printfn $"The current culture is \"{thisCulture.Name}\"."
list.Sort currCmp
display list "Current culture..."
list.Sort currICCmp
display list "Current culture, ignore case..."
// Sort the list using the ordinal value of the character code points.
list.Sort ordCmp
display list "Ordinal..."
list.Sort ordICCmp
display list "Ordinal, ignore case..."
// Sort the list using the Turkish culture, which treats LATIN SMALL LETTER
// DOTLESS I differently than LATIN SMALL LETTER I.
list.Sort turkICComp
display list "Turkish culture, ignore case..."
(*
This code example produces the following results:
The original order of the list entries...
0x49
0x69
0x131
Invariant culture...
0x69
0x49
0x131
Invariant culture, ignore case...
0x49
0x69
0x131
The current culture is "en-US".
Current culture...
0x69
0x49
0x131
Current culture, ignore case...
0x49
0x69
0x131
Ordinal...
0x49
0x69
0x131
Ordinal, ignore case...
0x69
0x49
0x131
Turkish culture, ignore case...
0x131
0x49
0x69
*)
' This code example demonstrates members of the System.StringComparer class.
Imports System.Collections
Imports System.Collections.Generic
Imports System.Globalization
Imports System.Threading
Class Sample
Public Shared Sub Main()
' Create a list of string.
Dim list As New List(Of String)
' Get the tr-TR (Turkish-Turkey) culture.
Dim turkish As New CultureInfo("tr-TR")
' Get the culture that is associated with the current thread.
Dim thisCulture As CultureInfo = Thread.CurrentThread.CurrentCulture
' Get the standard StringComparers.
Dim invCmp As StringComparer = StringComparer.InvariantCulture
Dim invICCmp As StringComparer = StringComparer.InvariantCultureIgnoreCase
Dim currCmp As StringComparer = StringComparer.CurrentCulture
Dim currICCmp As StringComparer = StringComparer.CurrentCultureIgnoreCase
Dim ordCmp As StringComparer = StringComparer.Ordinal
Dim ordICCmp As StringComparer = StringComparer.OrdinalIgnoreCase
' Create a StringComparer that uses the Turkish culture and ignores case.
Dim turkICComp As StringComparer = StringComparer.Create(turkish, True)
' Define three strings consisting of different versions of the letter I.
' LATIN CAPITAL LETTER I (U+0049)
Dim capitalLetterI As String = "I"
' LATIN SMALL LETTER I (U+0069)
Dim smallLetterI As String = "i"
' LATIN SMALL LETTER DOTLESS I (U+0131)
Dim smallLetterDotlessI As String = "ı"
' Add the three strings to the list.
list.Add(capitalLetterI)
list.Add(smallLetterI)
list.Add(smallLetterDotlessI)
' Display the original list order.
Display(list, "The original order of the list entries...")
' Sort the list using the invariant culture.
list.Sort(invCmp)
Display(list, "Invariant culture...")
list.Sort(invICCmp)
Display(list, "Invariant culture, ignore case...")
' Sort the list using the current culture.
Console.WriteLine("The current culture is ""{0}"".", thisCulture.Name)
list.Sort(currCmp)
Display(list, "Current culture...")
list.Sort(currICCmp)
Display(list, "Current culture, ignore case...")
' Sort the list using the ordinal value of the character code points.
list.Sort(ordCmp)
Display(list, "Ordinal...")
list.Sort(ordICCmp)
Display(list, "Ordinal, ignore case...")
' Sort the list using the Turkish culture, which treats LATIN SMALL LETTER
' DOTLESS I differently than LATIN SMALL LETTER I.
list.Sort(turkICComp)
Display(list, "Turkish culture, ignore case...")
End Sub
Public Shared Sub Display(ByVal lst As List(Of String), ByVal title As String)
Dim c As Char
Dim s As String
Dim codePoint As Integer
Console.WriteLine(title)
For Each s In lst
c = s(0)
codePoint = Convert.ToInt32(c)
Console.WriteLine("0x{0:x}", codePoint)
Next s
Console.WriteLine()
End Sub
End Class
'This code example produces the following results:
'
'The original order of the list entries...
'0x49
'0x69
'0x131
'
'Invariant culture...
'0x69
'0x49
'0x131
'
'Invariant culture, ignore case...
'0x49
'0x69
'0x131
'
'The current culture is "en-US".
'Current culture...
'0x69
'0x49
'0x131
'
'Current culture, ignore case...
'0x49
'0x69
'0x131
'
'Ordinal...
'0x49
'0x69
'0x131
'
'Ordinal, ignore case...
'0x69
'0x49
'0x131
'
'Turkish culture, ignore case...
'0x131
'0x49
'0x69
'
注釈
この API の詳細については、「 StringComparer の補足 API 解説」を参照してください。
コンストラクター
StringComparer() |
StringComparer クラスの新しいインスタンスを初期化します。 |
プロパティ
CurrentCulture |
現在のカルチャの単語ベースの比較規則を使用して、大文字と小文字を区別して文字列を比較する StringComparer オブジェクトを取得します。 |
CurrentCultureIgnoreCase |
現在のカルチャの単語ベースの比較規則を使用して、大文字と小文字を区別せずに文字列を比較する StringComparer オブジェクトを取得します。 |
InvariantCulture |
インバリアント カルチャの単語ベースの比較規則を使用して、大文字と小文字を区別して文字列を比較する StringComparer オブジェクトを取得します。 |
InvariantCultureIgnoreCase |
インバリアント カルチャの単語ベースの比較規則を使用して、大文字と小文字を区別せずに文字列を比較する StringComparer オブジェクトを取得します。 |
Ordinal |
大文字と小文字を区別して序数の文字列比較を実行する StringComparer オブジェクトを取得します。 |
OrdinalIgnoreCase |
大文字と小文字を区別せずに序数の文字列比較を実行する StringComparer オブジェクトを取得します。 |
メソッド
Compare(Object, Object) |
派生クラスでオーバーライドされた場合、2 つのオブジェクトを比較し、相対的な並べ替え順序を表す値を返します。 |
Compare(String, String) |
派生クラスでオーバーライドされた場合、2 つの文字列を比較し、相対的な並べ替え順序を表す値を返します。 |
Create(CultureInfo, Boolean) |
指定したカルチャの規則に基づいて文字列を比較する StringComparer オブジェクトを作成します。 |
Create(CultureInfo, CompareOptions) |
指定したカルチャおよび文字列オプションの規則に基づいて文字列を比較する StringComparer オブジェクトを作成します。 |
Equals(Object) |
指定されたオブジェクトが現在のオブジェクトと等しいかどうかを判断します。 (継承元 Object) |
Equals(Object, Object) |
派生クラスでオーバーライドされた場合、2 つのオブジェクトが等しいかどうかを示します。 |
Equals(String, String) |
派生クラスでオーバーライドされた場合、2 つの文字列が等しいかどうかを示します。 |
FromComparison(StringComparison) |
指定した StringComparison インスタンスを StringComparer インスタンスに変換します。 |
GetHashCode() |
既定のハッシュ関数として機能します。 (継承元 Object) |
GetHashCode(Object) |
派生クラスでオーバーライドされた場合、指定したオブジェクトのハッシュ コードを取得します。 |
GetHashCode(String) |
派生クラスでオーバーライドされた場合、指定した文字列のハッシュ コードを取得します。 |
GetType() |
現在のインスタンスの Type を取得します。 (継承元 Object) |
IsWellKnownCultureAwareComparer(IEqualityComparer<String>, CompareInfo, CompareOptions) |
指定した IEqualityComparer<T> が既知のカルチャ対応文字列比較子であるかどうかを判断します。 |
IsWellKnownOrdinalComparer(IEqualityComparer<String>, Boolean) |
指定した IEqualityComparer<T> が既知の序数文字列比較子であるかどうかを判断します。 |
MemberwiseClone() |
現在の Object の簡易コピーを作成します。 (継承元 Object) |
ToString() |
現在のオブジェクトを表す文字列を返します。 (継承元 Object) |
明示的なインターフェイスの実装
IComparer.Compare(Object, Object) |
2 つのオブジェクトを比較して、一方が他方より小さいか、同じか、または大きいかを示す値を返します。 |
IEqualityComparer.Equals(Object, Object) |
指定したオブジェクトが等しいかどうかを判断します。 |
IEqualityComparer.GetHashCode(Object) |
指定したオブジェクトのハッシュ コードを返します。 |
適用対象
こちらもご覧ください
.NET