Comparer_jp
日本語を比較(ソート)するための Comparer クラスと
static なメソッド Compare() です
string.Compare() の代わりに Comparer_jp.Compare() を使用します
Comparer_jp.cs
using System.Globalization;
namespace System.Text
{
public sealed class Comparer_jp : IComparer<string>
{
public readonly CompareOptions options;
public readonly CompareInfo compare_info;
public Comparer_jp(bool ignorecase = false)
{
options = CompareOptions.IgnoreWidth | CompareOptions.IgnoreKanaType;
if (ignorecase)
{
options |= CompareOptions.IgnoreCase;
}
var ci = new CultureInfo("ja-JP");
compare_info = ci.CompareInfo;
}
public int Compare(string? s1, string? s2)
{
return compare_info.Compare(s1, s2, options);
}
public readonly static Comparer_jp comparer = new Comparer_jp();
public readonly static Comparer_jp comparer_ignorecase = new Comparer_jp(true);
public static int Compare(string? s1, string? s2, bool ignorecase = false)
{
if (ignorecase)
{
return comparer_ignorecase.Compare(s1, s2);
}
else
{
return comparer.Compare(s1, s2);
}
}
}
}