コガネブログ

平日更新を目標にUnityやC#、Visual Studioなどのゲーム開発アレコレを書いていきます

【C#】スネークケースの文字列をキャメルケースに変換する拡張メソッド

ソースコード

using System;
using System.Linq;

/// <summary>
/// string 型の拡張メソッドを管理するクラス
/// </summary>
public static class StringExtensions
{
    /// <summary>
    /// スネークケースをアッパーキャメル(パスカル)ケースに変換します
    /// 例) quoted_printable_encode → QuotedPrintableEncode
    /// </summary>
    public static string SnakeToUpperCamel( this string self )
    {
        if ( string.IsNullOrEmpty( self ) ) return self;

        return self
            .Split( new[] { '_' }, StringSplitOptions.RemoveEmptyEntries )
            .Select( s => char.ToUpperInvariant( s[ 0 ] ) + s.Substring( 1, s.Length - 1 ) )
            .Aggregate( string.Empty, ( s1, s2 ) => s1 + s2 )
        ;
    }
    
    /// <summary>
    /// スネークケースをローワーキャメル(キャメル)ケースに変換します
    /// 例) quoted_printable_encode → quotedPrintableEncode
    /// </summary>
    public static string SnakeToLowerCamel( this string self )
    {
        if ( string.IsNullOrEmpty( self ) ) return self;

        return self
            .SnakeToUpperCamel()
            .Insert( 0, char.ToLowerInvariant( self[ 0 ] ).ToString() ).Remove( 1, 1 )
        ;
    }
}

参考サイト様

【C#】LINQで遊ぶ。スネークケースをキャメルケースに変換する。 | 創造的プログラミングと粘土細工