Maemaemae

C#で文字列を小文字化する効率的な方法

C#で文字列を小文字化する効率的な方法

はじめに

文字列の小文字化はプログラミングでよく使われる基本操作です。この記事では、C#での効率的な文字列小文字化の実装方法を紹介します。

基本的な文字列小文字化

ToLower() メソッド

public string ConvertToLowerCase(string input)
{
    if (string.IsNullOrEmpty(input))
    {
        return input;
    }

    return input.ToLower();
}

使用例:

string result = ConvertToLowerCase("Hello WORLD!"); // "hello world!"

国際化対応の小文字化

ToLowerInvariant() メソッド(推奨)

public string ConvertToLowerCaseInvariant(string input)
{
    if (string.IsNullOrEmpty(input))
    {
        return input;
    }

    return input.ToLowerInvariant();
}

特定言語向けの小文字化

using System.Globalization;

public string ConvertToLowerCaseWithCulture(string input, CultureInfo culture)
{
    if (string.IsNullOrEmpty(input))
    {
        return input;
    }

    return input.ToLower(culture);
}

// 使用例
string result = ConvertToLowerCaseWithCulture("EXAMPLE", CultureInfo.GetCultureInfo("tr-TR"));

便利な拡張メソッド

安全な小文字化

public static class StringExtensions
{
    public static string ToLowerSafe(this string input)
    {
        return string.IsNullOrEmpty(input) ? input : input.ToLowerInvariant();
    }
}

// 使用例
string result = "HELLO".ToLowerSafe(); // "hello"
string nullResult = null.ToLowerSafe(); // null

ベストプラクティス

  1. 基本原則: 特に理由がない限り、ToLowerInvariant()を使用する
  2. 国際化: 多言語アプリケーションでは適切なカルチャ情報を考慮する
  3. null安全: 常にnullチェックを含める

よくある問題と解決策

特殊文字と言語固有の問題

一部の言語では、大文字小文字変換に特殊ルールがあります:

// 英語での変換: "I" -> "i"
string englishResult = "I".ToLowerInvariant(); // "i"

// トルコ語での変換: "I" -> "ı" (ドットなしのi)
string turkishResult = "I".ToLower(CultureInfo.GetCultureInfo("tr-TR")); // "ı"

まとめ

C#での文字列小文字化はToLowerInvariant()メソッドを使用するのが一般的です。国際化対応が必要な場合は適切なカルチャ情報を指定し、常にnullチェックを行うことが重要です。

参考資料


.NET 6.0 以上および C# 10.0 以上を基準としています。

C#.NET文字列操作ToLower