MRが楽しい

MRやVRについて学習したことを書き残す

C#の文字列の比較で大文字小文字を区別せず比較する

本日はC#の小ネタ枠です。
C#の文字列の比較で大文字小文字を区別せず比較する手順です。

StringComparison

Equalsメソッドの引数にStringComparison列挙型を指定することで様々な比較規則が指定できます。
learn.microsoft.com

識別子 説明
CurrentCulture 0 現在のカルチャに依存した並べ替え規則で文字列を比較します
CurrentCultureIgnoreCase 1 カルチャに依存した並べ替え規則かつ比較対象の文字列の大文字と小文字の区別を無視して文字列を比較します
InvariantCulture 2 カルチャに依存しない並べ替え規則で文字列を比較します
InvariantCultureIgnoreCase 3 カルチャに依存しない並べ替え規則で比較対象の文字列の大文字と小文字の区別を無視して文字列を比較します
Ordinal 4 バイナリの並べ替え規則で文字列を比較します
OrdinalIgnoreCase 5 バイナリの並べ替え規則で比較対象の文字列の大文字と小文字の区別を無視して文字列を比較します

以下のように大文字小文字を区別しない比較を行うことができます。

var text1 = "ABcde";
var text2 = "abcDE";
// 大文字小文字を区別せずに比較する
var result = text1.Equals(text2, System.StringComparison.OrdinalIgnoreCase);

ToUpper

またはToUpper関数を利用して文字列を大文字にして比較することで大文字小文字を区別せずに比較することもできます。
learn.microsoft.com

以下のように大文字小文字を区別しない比較を行うことができます。

var text1 = "ABcde";
var text2 = "abcDE";
// 大文字小文字を区別せずに比較する
var result = text1.ToUpper() == text2.ToUpper();

サンプルスクリプト

以下のサンプルスクリプトを作成して動作を確認しました。
・StringCompareTest.cs

using UnityEngine;

public class StringCompareTest : MonoBehaviour
{
    /// <summary>
    /// 比較する文字列1
    /// </summary>
    [SerializeField]
    private string text1 = default;

    /// <summary>
    /// 比較する文字列2
    /// </summary>
    [SerializeField]
    private string text2 = default;
    
    [ContextMenu("CompareText")]
    public void CompareText()
    {
        // 文字列をそのまま比較する
        var result = text1 == text2;
        Debug.Log($"CompareText Equals: {result}");
    }
    
    [ContextMenu("CompareTextWithEquals")]
    public void CompareTextWithEquals()
    {
        // 大文字小文字を区別せずに比較する
        var result = text1.Equals(text2, System.StringComparison.OrdinalIgnoreCase);
        Debug.Log($"CompareTextWithEquals Equals: {result}");
    }
    
    [ContextMenu("CompareTextWithUpper")]
    public void CompareTextWithUpper()
    {
        // 大文字小文字を区別せずに比較する
        var result = text1.ToUpper() == text2.ToUpper();
        Debug.Log($"CompareTextWithUpper Equals: {result}");
    }
}