問題概要
英小文字と '_' からなる文字列が与えられる。この文字列は、単語の間に '_' を挟むことで単語の切れ目を明示する形式(スネークケース)である。キャメルケース(単語の先頭を大文字にする形式)に変換せよ。
解法
元の文字列から '_' を除去した上で、単語の先頭を大文字にできればよいです。そのためには、文字列を先頭から走査しつつ、
- '_' を見つけたら、次の文字を大文字にして答えに追記
- それ以外はそのまま答えに追記
とすれば実現できます。
コード
#define REP( i, m, n ) for ( int i = (int)( m ); i < (int)( n ); ++i ) class NamingConvention { public: string toCamelCase( string variableName ) { string res; REP( i, 0, variableName.size() ) { if ( variableName[i] == '_' ) { i++; variableName[i] = toupper( variableName[i] ); } res += variableName[i]; } return res; } };