Guid ToStringフォーマットはどのくらい知っていますか?


日常のプログラミングでは、Guidが一般的に使われていますが、最も一般的な使用は以下の通りです.
string id = Guid.NewGuid().ToString();

この文は新しいGuidを生成し、次のように文字列に変換します.
//10244798-9a34-4245-b1ef-9143f9b1e68a
しかし、いくつかの状況では、次のような詳細の違いがあります.
  • 前後に括弧{xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
  • の間にハイフネーションがない
  • 前後は括弧(xxxxxxxxx-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
    このような状況に遭遇すると面倒になりますが、最も一般的なのはguidで生成された文字列の解析処理です.例えば、かっこをつけたり、ハイフンを空の文字で置き換えたりします.
    var str = guid.ToString();
    
    var id = "{" + str + "}";
    var id2 = str.Replace("-", "");
    var id3 = "(" + str + ")";

     
    実はそんなに面倒ではありません.ToStringの時、リロードされた関数があります.
    ToString(String)

    フォーマット文字列を入力することで、このタイプのguid文字列を出力できます.
    例は次のとおりです.
    var guid = Guid.NewGuid();
    
    // 10244798-9a34-4245-b1ef-9143f9b1e68a
    Console.WriteLine(guid.ToString("D"));
    
    // 102447989a344245b1ef9143f9b1e68a
    Console.WriteLine(guid.ToString("N"));
    
    // {10244798-9a34-4245-b1ef-9143f9b1e68a}
    Console.WriteLine(guid.ToString("B"));
    
    // (10244798-9a34-4245-b1ef-9143f9b1e68a)
    Console.WriteLine(guid.ToString("P"));

     
    注意:ここでD,N,B,Pは大文字と小文字を区別せず、空の文字列が入力されるとデフォルトのDタイプが使用され、その他の場合は例外が報告されます.
    MSDNではもう1つの「X」タイプが検索されますが、.NetFx 3.5で使用すると例外がポップアップされます.
    未処理の例外:  System.FormatException:フォーマット文字列は、「D」、「d」、「N」、「n」、「P」、「p」、「B」または「b」のみです.
       System.Guid.ToString(String format,IFOrmatProvider provider)