かずきのBlog@hatena

日本マイクロソフトに勤めています。このブログは個人ブログなので、ここに書いている内容は個人的な意見で会社の公式見解ではない点にご注意ください。好きなものは XAML と C# 。苦手なものは型の無い言語です。

キャメルケースやアッパーキャメルケースの文字列を_区切りの文字列にする その2(追記)

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

う~ん、これでいいのかな・・・?

追記

コメントで後方参照を使った方法を教えてもらいました。これが一番よさそう。

var name = "SamplePropertyName";
var result = Regex.Replace(
    name,
    "([a-z])([A-Z])",
    "$1_$2")
    .ToLower();
Console.WriteLine(result); // sample_property_name