コガネブログ

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

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

ソースコード

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text.RegularExpressions;

/// <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で遊ぶ。スネークケースをキャメルケースに変換する。 | 創造的プログラミングと粘土細工