おーみんブログ

C#, ASP.NET Core, Unityが大好きです。

文字列比較とカルチャ依存

はじめに

C#のお勉強として出井秀行さんの『C# コードレシピ集』を読んでいたらカルチャ依存に関する文字列比較について学んだので備忘録として残しておきます。

サンプルコード

以下はstr1, str2, str3の文字列をそれぞれ比較しています。 StringComparison.Ordinal を用いて比較することでカレントカルチャに依存しない文字列比較を行うことができます。 また、StringComparison.OrdinalIgnoreCaseを用いると大文字小文字を区別せず、かつカレントカルチャに依存しない文字列比較を行えます。

//C#9.0以降のトップレベルステートメントを利用しています
using System;
var str1 = "hogehoge";
var str2 = "hogehoge";
var str3 = "HOGEHOGE";

//カレントカルチャ(日本)に依存する比較
Console.WriteLine(string.Compare(str1, str2));
//カレントカルチャ(日本)に依存しない比較
Console.WriteLine(string.Compare(str1, str2, StringComparison.Ordinal));
//カレントカルチャ(日本)に依存する比較
Console.WriteLine(string.Compare(str1, str3));
//カレントカルチャ(日本)に依存しない比較(大文字小文字を区別しない)
Console.WriteLine(string.Compare(str1, str3, StringComparison.OrdinalIgnoreCase));
0
-65248
-1
0