LINQ使って無理やりやったり、別解がコメントについたりしましたが、とりあえ素直?に正規表現でやってみようと思いました。
キャメルケースやアッパーキャメルケースの文字列を_区切りの文字列にする - かずきのBlog@hatena
var name = "SamplePropertyName"; var result = Regex.Replace( name, "[a-z][A-Z]", m => m.Value.Insert(1, "_")) .ToLower(); Console.WriteLine(result); // sample_property_name
う~ん、これでいいのかな・・・?
追記
Facebookのコメントで後方参照を使った方法を教えてもらいました。これが一番よさそう。
var name = "SamplePropertyName"; var result = Regex.Replace( name, "([a-z])([A-Z])", "$1_$2") .ToLower(); Console.WriteLine(result); // sample_property_name