fork(2) download
  1. using System;
  2.  
  3. class Program
  4. {
  5. static void Main()
  6. {
  7. var p = new Product()
  8. {
  9. Code = "A123456",
  10. Name = "hogehoge"
  11. };
  12. Console.WriteLine(p.ToString("%y年%m月%d日 - %c - %n"));
  13.  
  14. Console.ReadKey();
  15. }
  16.  
  17. }
  18. class Product : IFormattable
  19. {
  20. public string Code { get; set; }
  21. public string Name { get; set; }
  22.  
  23. // Object.ToStringのオーバーライド
  24. public override string ToString()
  25. {
  26. // 書式と書式プロバイダを指定せずにToStringを呼ぶ
  27. return ToString("", null);
  28. }
  29.  
  30. public string ToString(string format)
  31. {
  32. // 書式プロバイダを指定せずにToStringを呼ぶ
  33. return ToString(format, null);
  34. }
  35.  
  36. public string ToString(string format, IFormatProvider formatProvider)
  37. {
  38. var isEscape = false;
  39. var result = "";
  40. foreach (var f in format)
  41. {
  42. switch (f)
  43. {
  44. case '%':
  45. isEscape = true;
  46. continue;
  47. case 'c':
  48. if (isEscape)
  49. result += Code;
  50. else
  51. result += f;
  52. break;
  53. case 'n':
  54. if (isEscape)
  55. result += Name;
  56. else
  57. result += f;
  58. break;
  59. case 'y':
  60. if (isEscape)
  61. result += DateTime.Now.ToString("yyyy");
  62. else
  63. result += f;
  64. break;
  65. case 'm':
  66. if (isEscape)
  67. result += DateTime.Now.ToString("MM");
  68. else
  69. result += f;
  70. break;
  71. case 'd':
  72. if (isEscape)
  73. result += DateTime.Now.ToString("dd");
  74. else
  75. result += f;
  76. break;
  77. default:
  78. result += f;
  79. break;
  80. }
  81. isEscape = false;
  82. }
  83. return result;
  84. }
  85. }
Success #stdin #stdout 0.06s 17904KB
stdin
Standard input is empty
stdout
2020年02月02日 - A123456 - hogehoge