Language
Note
ãã®ããŒãžã«ã¢ã¯ã»ã¹ããã«ã¯ãæ¿èªãå¿ èŠã§ãã ãµã€ã³ã€ã³ãŸãã¯ãã£ã¬ã¯ããªã®å€æŽã詊ãããšãã§ããŸãã
ãã®ããŒãžã«ã¢ã¯ã»ã¹ããã«ã¯ãæ¿èªãå¿ èŠã§ãã ãã£ã¬ã¯ããªã®å€æŽã詊ãããšãã§ããŸãã
æžåŒèšå®ã¯ãã¯ã©ã¹ãŸãã¯æ§é äœã®ã€ã³ã¹ã¿ã³ã¹ããŸãã¯åæå€ããæåå衚çŸã«å€æããããã»ã¹ã§ãã ãã®ç®çã¯ãçµæã®æååããŠãŒã¶ãŒã«è¡šç€ºããããåŸã§å ã®ããŒã¿åã埩å ããããã«éã·ãªã¢ã«åãããããããšã§ãã ãã®èšäºã§ã¯ã.NET ã§æäŸãããæžåŒèšå®ã®ã¡ã«ããºã ã«ã€ããŠèª¬æããŸãã
泚
è§£æã¯æžåŒèšå®ã®éã®æäœã§ã ããŒã¹æäœã¯ãã®æåå衚çŸããããŒã¿åã®ã€ã³ã¹ã¿ã³ã¹ãäœæããŸãã 詳ããã¯ãæååã®è§£æã«é¢ããèšäºãã芧ãã ããã ã·ãªã¢ã«åãšéã·ãªã¢ã«åã«ã€ããŠã¯ãã.NET ã§ã®ã·ãªã¢ã«åããã芧ãã ããã
æžåŒèšå®ã®åºæ¬çãªã¡ã«ããºã ã¯ã Object.ToString ã¡ãœããã®æ¢å®ã®å®è£ ã§ããããã«ã€ããŠã¯ããã®èšäºã§åŸè¿°ããã ToString ã¡ãœããã䜿çšããæ¢å®ã®æžåŒèšå®ã ã»ã¯ã·ã§ã³ã§èª¬æããŸãã ãã ãã.NET ã«ã¯ããã®æ¢å®ã®æžåŒèšå®æ©èœã倿Žããã³æ¡åŒµããæ¹æ³ãããã€ããããŸãã æ¬¡ã«äŸã瀺ããŸãã
Object.ToString ã¡ãœããããªãŒããŒã©ã€ãããŠããªããžã§ã¯ãã®å€ã®ã«ã¹ã¿ã æåå圢åŒãå®çŸ©ããã 詳现ã«ã€ããŠã¯ããã®èšäºã§åŸè¿° ãããToString ã¡ãœããã®ãªãŒããŒã©ã€ã ãã»ã¯ã·ã§ã³ãåç §ããŠãã ããã
ãªããžã§ã¯ãã®å€ã®æåå圢åŒã«è€æ°ã®åœ¢åŒãæãããæžåŒæå®åãå®çŸ©ããã ããšãã°ã次ã®ã¹ããŒãã¡ã³ãã§ã¯ "X" æžåŒæå®åã䜿çšããŠæŽæ°ã 16 é²å€ã®æåå圢åŒã«å€æããŸãã
int integerValue = 60312; Console.WriteLine(integerValue.ToString("X")); // Displays EB98.Dim integerValue As Integer = 60312 Console.WriteLine(integerValue.ToString("X")) ' Displays EB98.æžåŒæå®åã®è©³çްã«ã€ããŠã¯ãã ToString ã¡ãœãããšæžåŒæå®æåå ãã®ã»ã¯ã·ã§ã³ãåç §ããŠãã ããã
æžåŒãããã€ããŒã䜿çšããŠãç¹å®ã®ã«ã«ãã£ã®æžåŒæå®èŠåãå®è£ ããã ããšãã°ã次ã®ã¹ããŒãã¡ã³ãã§ã¯ en-US ã«ã«ãã£ã®æžåŒæå®èŠåã䜿çšããŠé貚å€ã衚瀺ããŸãã
double cost = 1632.54; Console.WriteLine(cost.ToString("C", new System.Globalization.CultureInfo("en-US"))); // The example displays the following output: // $1,632.54Dim cost As Double = 1632.54 Console.WriteLine(cost.ToString("C", New System.Globalization.CultureInfo("en-US"))) ' The example displays the following output: ' $1,632.54æžåŒãããã€ããŒã䜿çšããæžåŒèšå®ã®è©³çްã«ã€ããŠã¯ãæžåŒãããã€ããŒã«é¢ããã»ã¯ã·ã§ã³ãåç §ããŠãã ããã
IFormattable ã€ã³ã¿ãŒãã§ã€ã¹ãå®è£ ããŠã Convert ã¯ã©ã¹ã«ããæåå倿ãšè€åæžåŒæå®ã®äž¡æ¹ããµããŒãããæ¹æ³ã 詳现ã«ã€ããŠã¯ãã IFormattable ã€ã³ã¿ãŒãã§ã€ã¹ ãã®ã»ã¯ã·ã§ã³ãåç §ããŠãã ããã
è€åæžåŒæå®ã䜿çšããŠãå€ã®æåå圢åŒã倧ããªæååã«åãèŸŒãæ¹æ³ã 詳现ã«ã€ããŠã¯ãã è€åæžåŒæå® ãã®ã»ã¯ã·ã§ã³ãåç §ããŠãã ããã
å€ã®æåå衚çŸã倧ããªæååã«åã蟌ãããã®ããã«èªã¿ãããæ§æã§ããæååè£éã䜿çšããã 詳现ã«ã€ããŠã¯ãæååè£éã«é¢ãããããã¯ãåç §ããŠãã ããã
ICustomFormatter ããã³ IFormatProvider ãå®è£ ããŠãå®å šãªã«ã¹ã¿ã æžåŒèšå®ãœãªã¥ãŒã·ã§ã³ãæäŸããæ¹æ³ã 詳现ã«ã€ããŠã¯ãã ICustomFormatter ã䜿çšããã«ã¹ã¿ã æžåŒèšå® ãã®ã»ã¯ã·ã§ã³ãåç §ããŠãã ããã
以éã®ã»ã¯ã·ã§ã³ã§ã¯ããªããžã§ã¯ããæåå圢åŒã«å€æãããããã®æ¹æ³ã«ã€ããŠèª¬æããŸãã
ToString ã¡ãœããã䜿çšããæ¢å®ã®æžåŒèšå®
System.Object ããæŽŸçãããã¹ãŠã®åã¯ãæ¢å®ã§åã®ååãè¿ãããã©ã¡ãŒã¿ãŒãªãã® ToString ã¡ãœãããèªåçã«ç¶æ¿ããŸãã æ¢å®ã® ToString ã¡ãœããã®äŸã次ã«ç€ºããŸãã ãã®ã³ãŒãäŸã§ã¯ãå®è£
ãæããªã Automobile ãšããååã®ã¯ã©ã¹ãå®çŸ©ããŸãã ãã®ã¯ã©ã¹ãã€ã³ã¹ã¿ã³ã¹åããã ToString ã¡ãœãããåŒã³åºããããšããã®åã®ååã衚瀺ãããŸãã
ToString ã¡ãœããã¯ããã®äŸã§ã¯æç€ºçã«åŒã³åºãããŸããã
Console.WriteLine(Object) ã¡ãœããã¯åŒæ°ãšããŠæž¡ããããªããžã§ã¯ãã® ToString ã¡ãœãããæé»çã«åŒã³åºããŸãã
using System;
public class Automobile
{
// No implementation. All members are inherited from Object.
}
public class Example9
{
public static void Main()
{
Automobile firstAuto = new Automobile();
Console.WriteLine(firstAuto);
}
}
// The example displays the following output:
// Automobile
Public Class Automobile
' No implementation. All members are inherited from Object.
End Class
Module Example9
Public Sub Main9()
Dim firstAuto As New Automobile()
Console.WriteLine(firstAuto)
End Sub
End Module
' The example displays the following output:
' Automobile
èŠå
Windows 8 以éãWindows ã©ã³ã¿ã€ã ã«ã¯ãæ¢å®ã®æžåŒæå®ããµããŒãããåäžã®ã¡ãœãã IStringable ãåãã ã€ã³ã¿ãŒãã§ã€ã¹ãå«ãŸããŠããŸãã ãã ãããããŒãžãåã§ã¯ã IStringable ã€ã³ã¿ãŒãã§ã€ã¹ãå®è£
ããªãããšããå§ãããŸãã 詳现ã«ã€ããŠã¯ããWindows ã©ã³ã¿ã€ã ãš IStringable ã€ã³ã¿ãŒãã§ã€ã¹ãåç
§ããŠãã ããã
ã€ã³ã¿ãŒãã§ã€ã¹ä»¥å€ã®åã¯ãã¹ãŠ ObjectããæŽŸçããããããã®æ©èœã¯ã«ã¹ã¿ã ã®ã¯ã©ã¹ãŸãã¯æ§é äœã«èªåçã«æäŸãããŸãã ãã ããæ¢å®ã® ToString ã¡ãœããã§æäŸãããæ©èœã«ã¯å¶éããããŸããåãèå¥ããŸãããåã®ã€ã³ã¹ã¿ã³ã¹ã«é¢ããæ
å ±ãæå®ãããšããšã©ãŒã«ãªããŸãã ããèªäœã«é¢ããæ
å ±ãæäŸãããªããžã§ã¯ãã®æåå圢åŒãæäŸããã«ã¯ã ToString ã¡ãœããããªãŒããŒã©ã€ãããå¿
èŠããããŸãã
泚
æ§é äœã¯ã ValueTypeããæŽŸçãã Objectãç¶æ¿ããŸãã ValueType 㯠Object.ToStringããªãŒããŒã©ã€ãããŸããããã®å®è£ ã¯åãã§ãã
ToString ã¡ãœããã®ãªãŒããŒã©ã€ã
åã®ååã衚瀺ããããšã¯ãå€ãã®å Žåãéå®çãªçšéã§ãããåã®ã³ã³ã·ã¥ãŒããŒã 1 ã€ã®ã€ã³ã¹ã¿ã³ã¹ãå¥ã®ã€ã³ã¹ã¿ã³ã¹ãšåºå¥ããããšã¯ã§ããŸããã ããããToString ã¡ãœããããªãŒããŒã©ã€ãããŠããã£ãšåœ¹ã«ç«ã€ãªããžã§ã¯ãã®å€ã®åœ¢åŒãäœæããããšãã§ããŸãã æ¬¡ã®äŸã§ã¯ Temperature ãªããžã§ã¯ããå®çŸ©ãããã® ToString ã¡ãœããããªãŒããŒã©ã€ãããŠãæž©åºŠãææ°ã§è¡šç€ºããŸãã
public class Temperature
{
private decimal temp;
public Temperature(decimal temperature)
{
this.temp = temperature;
}
public override string ToString()
{
return this.temp.ToString("N1") + "°C";
}
}
public class Example12
{
public static void Main()
{
Temperature currentTemperature = new Temperature(23.6m);
Console.WriteLine($"The current temperature is {currentTemperature}");
}
}
// The example displays the following output:
// The current temperature is 23.6°C.
Public Class Temperature
Private temp As Decimal
Public Sub New(temperature As Decimal)
Me.temp = temperature
End Sub
Public Overrides Function ToString() As String
Return Me.temp.ToString("N1") + "°C"
End Function
End Class
Module Example13
Public Sub Main13()
Dim currentTemperature As New Temperature(23.6D)
Console.WriteLine("The current temperature is " +
currentTemperature.ToString())
End Sub
End Module
' The example displays the following output:
' The current temperature is 23.6°C.
.NET ã§ã¯ãåããªããã£ãå€åã® ToString ã¡ãœããã¯ãååã®ä»£ããã«ãªããžã§ã¯ãã®å€ã衚瀺ããããã«ãªãŒããŒã©ã€ããããŠããŸãã åããªããã£ãåã®ãªãŒããŒã©ã€ããæ¬¡ã®è¡šã«ç€ºããŸãã ãªãŒããŒã©ã€ããããã¡ãœããã®ã»ãšãã©ã¯ã ToString ã¡ãœããã®å¥ã®ãªãŒããŒããŒããåŒã³åºãããã®åã®äžè¬çãªåœ¢åŒãå®çŸ©ãã "G" æžåŒæå®åãšãçŸåšã®ã«ã«ãã£ã衚ã IFormatProvider ãªããžã§ã¯ããæž¡ããŸãã
| ã¿ã€ã | ToString ã®ãªãŒããŒã©ã€ã |
|---|---|
| Boolean | Boolean.TrueString ãŸã㯠Boolean.FalseStringãè¿ããŸãã |
| Byte |
Byte.ToString("G", NumberFormatInfo.CurrentInfo) ãåŒã³åºããŠãçŸåšã®ã«ã«ãã£ã«åãã㊠Byte å€ã®æžåŒèšå®ãããŸãã |
| Char | æåãæååãšããŠè¿ããŸãã |
| DateTime |
DateTime.ToString("G", DatetimeFormatInfo.CurrentInfo) ãåŒã³åºããŠãçŸåšã®ã«ã«ãã£ã«åãããŠæ¥ä»ãšæå»ã®å€ã®æžåŒèšå®ãããŸãã |
| Decimal |
Decimal.ToString("G", NumberFormatInfo.CurrentInfo) ãåŒã³åºããŠãçŸåšã®ã«ã«ãã£ã«åãã㊠Decimal å€ã®æžåŒèšå®ãããŸãã |
| Double |
Double.ToString("G", NumberFormatInfo.CurrentInfo) ãåŒã³åºããŠãçŸåšã®ã«ã«ãã£ã«åãã㊠Double å€ã®æžåŒèšå®ãããŸãã |
| Int16 |
Int16.ToString("G", NumberFormatInfo.CurrentInfo) ãåŒã³åºããŠãçŸåšã®ã«ã«ãã£ã«åãã㊠Int16 å€ã®æžåŒèšå®ãããŸãã |
| Int32 |
Int32.ToString("G", NumberFormatInfo.CurrentInfo) ãåŒã³åºããŠãçŸåšã®ã«ã«ãã£ã«åãã㊠Int32 å€ã®æžåŒèšå®ãããŸãã |
| Int64 |
Int64.ToString("G", NumberFormatInfo.CurrentInfo) ãåŒã³åºããŠãçŸåšã®ã«ã«ãã£ã«åãã㊠Int64 å€ã®æžåŒèšå®ãããŸãã |
| SByte |
SByte.ToString("G", NumberFormatInfo.CurrentInfo) ãåŒã³åºããŠãçŸåšã®ã«ã«ãã£ã«åãã㊠SByte å€ã®æžåŒèšå®ãããŸãã |
| Single |
Single.ToString("G", NumberFormatInfo.CurrentInfo) ãåŒã³åºããŠãçŸåšã®ã«ã«ãã£ã«åãã㊠Single å€ã®æžåŒèšå®ãããŸãã |
| UInt16 |
UInt16.ToString("G", NumberFormatInfo.CurrentInfo) ãåŒã³åºããŠãçŸåšã®ã«ã«ãã£ã«åãã㊠UInt16 å€ã®æžåŒèšå®ãããŸãã |
| UInt32 |
UInt32.ToString("G", NumberFormatInfo.CurrentInfo) ãåŒã³åºããŠãçŸåšã®ã«ã«ãã£ã«åãã㊠UInt32 å€ã®æžåŒèšå®ãããŸãã |
| UInt64 |
UInt64.ToString("G", NumberFormatInfo.CurrentInfo) ãåŒã³åºããŠãçŸåšã®ã«ã«ãã£ã«åãã㊠UInt64 å€ã®æžåŒèšå®ãããŸãã |
ToString ã¡ãœãããšæžåŒæå®æåå
æ¢å®ã® ToString ã¡ãœããã ToString ã®ãªãŒããŒã©ã€ãã®äœ¿çšã¯ããªããžã§ã¯ãã®æåå圢åŒã 1 ã€ã®å Žåã«é©ããŠããŸãã ããããå€ãã®å Žåãªããžã§ã¯ãã®å€ã«ã¯è€æ°ã®åœ¢åŒããããŸãã ããšãã°ã枩床ã¯è¯æ°ãææ°ããŸãã¯ã±ã«ãã³ã§è¡šçŸã§ããŸãã ãŸããæŽæ°å€ 10 㯠10ã10.0ã1.0e01ã$10.00 ãªã©ã®å€ãã®æ¹æ³ã§è¡šãããšãã§ããŸãã
.NET ã§ã¯ãæžåŒæå®æååã䜿çšããããšã§ã1 ã€ã®å€ã«è€æ°ã®æåå圢åŒãæãããããšãã§ããŸãã æžåŒæå®æååãšã¯å®çŸ©æžã¿ã®æžåŒæå®åã 1 ã€ä»¥äžå«ãæååã§ããæžåŒæå®åãšã¯ã ToString ã¡ãœããã«ãããã®åºåã®æžåŒèšå®æ¹æ³ãå®çŸ©ãã 1 æåãŸãã¯æåã°ã«ãŒãã§ãã æžåŒæå®æååã¯ãã©ã¡ãŒã¿ãŒãšããŠãªããžã§ã¯ãã® ToString ã¡ãœããã«æž¡ããããªããžã§ã¯ãã®å€ã®æåå圢åŒã®è¡šç€ºæ¹æ³ã決å®ããŸãã
.NET ã§ã¯ããã¹ãŠã®æ°å€åãæ¥ä»/æå»åãããã³åæåã§ãå®çŸ©æžã¿ã®äžé£ã®æžåŒæå®åããµããŒãããŠããŸãã æžåŒæå®æååã䜿çšããŠãã¢ããªã±ãŒã·ã§ã³ã§å®çŸ©ãããããŒã¿åã®æåå圢åŒãè€æ°å®çŸ©ããããšãã§ããŸãã
æšæºã®æžåŒæå®æåå
æšæºæžåŒæå®æååã«ã¯ã1 ã€ã®æžåŒæå®åãå«ãŸããŠããŸããããã¯ãé©çšå ã®ãªããžã§ã¯ãã®æåå衚çŸãå®çŸ©ããè±åã®æåã§ãããçµææååã«è¡šç€ºãããæ¡æ°ã«åœ±é¿ããçç¥å¯èœãªæå¹æ¡æ°æå®åãå«ã¿ãŸãã 粟床æå®åãçç¥ãããŠãããããµããŒããããŠããªãå ŽåãæšæºæžåŒæå®åã¯æšæºæžåŒæå®æååãšåçã§ãã
.NET ã§ã¯ããã¹ãŠã®æ°å€åããã¹ãŠã®æ¥ä»/æå»åãããã³ãã¹ãŠã®åæåã«å¯ŸããŠäžé£ã®æšæºæžåŒæå®åãå®çŸ©ãããŠããŸãã ããšãã°ããããã®ã«ããŽãªããšã«ã察å¿ããåã®å€ã®äžè¬çãªæåå圢åŒãå®çŸ©ãã "G" æšæºæžåŒæå®åããµããŒããããŠããŸãã
åæåã®æšæºæžåŒæå®æååã¯ãå€ã®æåå圢åŒãçŽæ¥å¶åŸ¡ããŸãã åæå€ã® ToString ã¡ãœããã«æž¡ãããæžåŒæå®æååã«ãã£ãŠãæååå ("G" æžåŒæå®åããã³ "F" æžåŒæå®å)ãåºã«ãªãæŽæ°å€ ("D" æžåŒæå®å)ããŸã㯠16 é²å€ ("X" æžåŒæå®å) ã®ãããã䜿çšããŠå€ã衚瀺ããããæ±ºå®ãããŸãã æ¬¡ã®ã³ãŒãäŸã§ã¯ãæšæºæžåŒæå®æååã䜿çšããŠã DayOfWeek åæå€ã®æžåŒãèšå®ããæ¹æ³ã瀺ããŠããŸãã
DayOfWeek thisDay = DayOfWeek.Monday;
string[] formatStrings = {"G", "F", "D", "X"};
foreach (string formatString in formatStrings)
Console.WriteLine(thisDay.ToString(formatString));
// The example displays the following output:
// Monday
// Monday
// 1
// 00000001
Dim thisDay As DayOfWeek = DayOfWeek.Monday
Dim formatStrings() As String = {"G", "F", "D", "X"}
For Each formatString As String In formatStrings
Console.WriteLine(thisDay.ToString(formatString))
Next
' The example displays the following output:
' Monday
' Monday
' 1
' 00000001
åæåæžåŒæå®æååã«ã€ããŠã¯ãã åæåæžåŒæå®æååããåç §ããŠãã ããã
æ°å€åã®æšæºæžåŒæå®æååã¯ãéåžžã衚瀺ãããæ¡æ°ã 1 ã€ä»¥äžã®ããããã£å€ã«ãã£ãŠå¶åŸ¡ãããçµææååãå®çŸ©ããŸãã ããšãã°ã"C" æžåŒæå®åã¯æ°åãé貚å€ãšããŠæžåŒèšå®ããŸãã å¯äžã®ãã©ã¡ãŒã¿ãŒãšã㊠"C" æžåŒæå®åãæž¡ã㊠ToString ã¡ãœãããåŒã³åºããå ŽåãçŸåšã®ã«ã«ãã£ã® NumberFormatInfo ãªããžã§ã¯ãã®æ¬¡ã®ããããã£å€ã䜿çšããŠæ°å€ã®æåå圢åŒãå®çŸ©ããŸãã
CurrencySymbol ããããã£ãçŸåšã®ã«ã«ãã£ã®é貚èšå·ãæå®ããŸãã
CurrencyNegativePattern ããããã£ãŸã㯠CurrencyPositivePattern ããããã£ãæ¬¡ã®æ å ±ãç¹å®ããæŽæ°ãè¿ããŸãã
é貚èšå·ã®äœçœ®ã
è² ã®å€ã衚ãããã«ãå é ã®è² ã®ç¬Šå·ãæ«å°Ÿã®è² ã®ç¬Šå·ããŸãã¯ãã£ãã®ã©ãã䜿çšãããã
æ°å€ãšé貚èšå·ã®éã«ã¹ããŒã¹æåã衚瀺ãããã©ããã
CurrencyDecimalDigits ããããã£ãçµææååã®å°æ°ç¹ä»¥äžã®æ¡æ°ãå®çŸ©ããŸãã
CurrencyDecimalSeparator ããããã£ãçµææååã®å°æ°ç¹ã®èšå·ãå®çŸ©ããŸãã
CurrencyGroupSeparator ããããã£ãæ¡åºåãèšå·ãå®çŸ©ããŸãã
CurrencyGroupSizes ããããã£ã¯ãå°æ°ç¹ã®å·ŠåŽã«ããåã°ã«ãŒãã®æ¡æ°ãå®çŸ©ããŸãã
NegativeSign ããããã£ã¯ãæ¬åŒ§ã䜿çšããŠè² ã®å€ã瀺ããªãå Žåã«ãçµæã®æååã«ãããŠäœ¿çšãããè² ã®ç¬Šå·ã決å®ããŸãã
ããã«ãæ°å€æžåŒæå®æååã«ã¯æå¹æ¡æ°æå®åãå«ããããšãã§ããŸãã ãã®æå®åã®æå³ã¯ã䜿çšããæžåŒæå®æååã«ãã£ãŠç°ãªããŸãããéåžžã¯ãåèšæ¡æ°ãŸãã¯çµææååã«è¡šç€ºãããå°æ°éšã®æ¡æ°ã瀺ããŸãã ããšãã°ã次ã®äŸã§ã¯ã"X4" ã®æšæºæ°å€æååãšç²ŸåºŠæå®åã䜿çšããŠã4 æ¡ã® 16 鲿°ããæãæååå€ãäœæããŸãã
byte[] byteValues = { 12, 163, 255 };
foreach (byte byteValue in byteValues)
Console.WriteLine(byteValue.ToString("X4"));
// The example displays the following output:
// 000C
// 00A3
// 00FF
Dim byteValues() As Byte = {12, 163, 255}
For Each byteValue As Byte In byteValues
Console.WriteLine(byteValue.ToString("X4"))
Next
' The example displays the following output:
' 000C
' 00A3
' 00FF
æšæºã®æ°å€æžåŒæå®æååã®è©³çްã«ã€ããŠã¯ãã æšæºã®æ°å€æžåŒæå®æååããåç §ããŠãã ããã
æ¥ä»ãšæå»ã®å€ã®æšæºæžåŒæå®æååã¯ãç¹å®ã® DateTimeFormatInfo ããããã£ã«æ ŒçŽãããŠããã«ã¹ã¿ã æžåŒæå®æååã®ãšã€ãªã¢ã¹ã§ãã ããšãã°ã"D" æžåŒæå®åãæž¡ããŠæ¥ä»ãšæå»ã®å€ã® ToString ã¡ãœãããåŒã³åºããšãçŸåšã®ã«ã«ãã£ã® DateTimeFormatInfo.LongDatePattern ããããã£ã«æ ŒçŽãããŠããã«ã¹ã¿ã æžåŒæå®æååã䜿çšããŠæ¥ä»ãšæå»ã衚瀺ãããŸãã (ã«ã¹ã¿ã æžåŒæå®æååã®è©³çްã«ã€ããŠã¯ã次ã®ã»ã¯ã·ã§ã³ãåç
§ããŠãã ãã)ããã®é¢ä¿ã次ã®äŸã«ç€ºããŸãã
using System;
using System.Globalization;
public class Example
{
public static void Main()
{
DateTime date1 = new DateTime(2009, 6, 30);
Console.WriteLine($"D Format Specifier: {date1:D}");
string longPattern = CultureInfo.CurrentCulture.DateTimeFormat.LongDatePattern;
Console.WriteLine($"'{longPattern}' custom format string: {date1.ToString(longPattern)}");
}
}
// The example displays the following output when run on a system whose
// current culture is en-US:
// D Format Specifier: Tuesday, June 30, 2009
// 'dddd, MMMM dd, yyyy' custom format string: Tuesday, June 30, 2009
Imports System.Globalization
Module Example
Public Sub Main0()
Dim date1 As Date = #6/30/2009#
Console.WriteLine("D Format Specifier: {0:D}", date1)
Dim longPattern As String = CultureInfo.CurrentCulture.DateTimeFormat.LongDatePattern
Console.WriteLine("'{0}' custom format string: {1}",
longPattern, date1.ToString(longPattern))
End Sub
End Module
' The example displays the following output when run on a system whose
' current culture is en-US:
' D Format Specifier: Tuesday, June 30, 2009
' 'dddd, MMMM dd, yyyy' custom format string: Tuesday, June 30, 2009
æšæºã®æ¥ææžåŒæå®æååã®è©³çްã«ã€ããŠã¯ãã æšæºã®æ¥æåœ¢åŒæååããåç §ããŠãã ããã
ãŸããæšæºæžåŒæå®æååã䜿çšããŠããªããžã§ã¯ãã® ToString(String) ã¡ãœããã«ãã£ãŠçæããããã¢ããªã±ãŒã·ã§ã³å®çŸ©ã®ãªããžã§ã¯ãã®æåå圢åŒãå®çŸ©ããããšãã§ããŸãã ãªããžã§ã¯ãããµããŒãããç¹å®ã®æšæºæžåŒæå®åãå®çŸ©ãããããã倧æåãšå°æåãåºå¥ãããã©ãããæ±ºå®ã§ããŸãã
ToString(String) ã¡ãœããã®å®è£
ã§ã以äžããµããŒããããŸãã
ãªããžã§ã¯ãã®äžè¬çãªæžåŒãŸãã¯å ±éã®æžåŒã衚ã "G" æžåŒæå®åã ãªããžã§ã¯ãã®
ToStringã¡ãœããã®ãã©ã¡ãŒã¿ãŒãªãã®ãªãŒããŒããŒãã§ããã®ToString(String)ãªãŒããŒããŒããåŒã³åºããããã« "G" æšæºæžåŒæå®æååãæž¡ããŸããnull åç §ãšçããæžåŒæå®åã®ãµããŒã (Visual Basic ã§ã¯
Nothing)ã null åç §ãšçããæžåŒæå®åã¯ã"G" æžåŒæå®åãšåçãšèŠãªãå¿ èŠããããŸãã
ããšãã°ã Temperature ã¯ã©ã¹ã®å Žåãå
éšçã«ã¯æž©åºŠãææ°ã§æ ŒçŽããæžåŒæå®åã䜿çšã㊠Temperature ãªããžã§ã¯ãã®å€ãææ°ãè¯æ°ãããã³ã±ã«ãã³ã§è¡šãããšãã§ããŸãã å
·äœçãªäŸã次ã«ç€ºããŸãã
using System;
public class Temperature
{
private decimal m_Temp;
public Temperature(decimal temperature)
{
this.m_Temp = temperature;
}
public decimal Celsius
{
get { return this.m_Temp; }
}
public decimal Kelvin
{
get { return this.m_Temp + 273.15m; }
}
public decimal Fahrenheit
{
get { return Math.Round(((decimal) (this.m_Temp * 9 / 5 + 32)), 2); }
}
public override string ToString()
{
return this.ToString("C");
}
public string ToString(string format)
{
// Handle null or empty string.
if (String.IsNullOrEmpty(format)) format = "C";
// Remove spaces and convert to uppercase.
format = format.Trim().ToUpperInvariant();
// Convert temperature to Fahrenheit and return string.
switch (format)
{
// Convert temperature to Fahrenheit and return string.
case "F":
return this.Fahrenheit.ToString("N2") + " °F";
// Convert temperature to Kelvin and return string.
case "K":
return this.Kelvin.ToString("N2") + " K";
// return temperature in Celsius.
case "G":
case "C":
return this.Celsius.ToString("N2") + " °C";
default:
throw new FormatException(String.Format("The '{0}' format string is not supported.", format));
}
}
}
public class Example1
{
public static void Main()
{
Temperature temp1 = new Temperature(0m);
Console.WriteLine(temp1.ToString());
Console.WriteLine(temp1.ToString("G"));
Console.WriteLine(temp1.ToString("C"));
Console.WriteLine(temp1.ToString("F"));
Console.WriteLine(temp1.ToString("K"));
Temperature temp2 = new Temperature(-40m);
Console.WriteLine(temp2.ToString());
Console.WriteLine(temp2.ToString("G"));
Console.WriteLine(temp2.ToString("C"));
Console.WriteLine(temp2.ToString("F"));
Console.WriteLine(temp2.ToString("K"));
Temperature temp3 = new Temperature(16m);
Console.WriteLine(temp3.ToString());
Console.WriteLine(temp3.ToString("G"));
Console.WriteLine(temp3.ToString("C"));
Console.WriteLine(temp3.ToString("F"));
Console.WriteLine(temp3.ToString("K"));
Console.WriteLine(String.Format("The temperature is now {0:F}.", temp3));
}
}
// The example displays the following output:
// 0.00 °C
// 0.00 °C
// 0.00 °C
// 32.00 °F
// 273.15 K
// -40.00 °C
// -40.00 °C
// -40.00 °C
// -40.00 °F
// 233.15 K
// 16.00 °C
// 16.00 °C
// 16.00 °C
// 60.80 °F
// 289.15 K
// The temperature is now 16.00 °C.
Public Class Temperature
Private m_Temp As Decimal
Public Sub New(temperature As Decimal)
Me.m_Temp = temperature
End Sub
Public ReadOnly Property Celsius() As Decimal
Get
Return Me.m_Temp
End Get
End Property
Public ReadOnly Property Kelvin() As Decimal
Get
Return Me.m_Temp + 273.15D
End Get
End Property
Public ReadOnly Property Fahrenheit() As Decimal
Get
Return Math.Round(CDec(Me.m_Temp * 9 / 5 + 32), 2)
End Get
End Property
Public Overrides Function ToString() As String
Return Me.ToString("C")
End Function
Public Overloads Function ToString(format As String) As String
' Handle null or empty string.
If String.IsNullOrEmpty(format) Then format = "C"
' Remove spaces and convert to uppercase.
format = format.Trim().ToUpperInvariant()
Select Case format
Case "F"
' Convert temperature to Fahrenheit and return string.
Return Me.Fahrenheit.ToString("N2") & " °F"
Case "K"
' Convert temperature to Kelvin and return string.
Return Me.Kelvin.ToString("N2") & " K"
Case "C", "G"
' Return temperature in Celsius.
Return Me.Celsius.ToString("N2") & " °C"
Case Else
Throw New FormatException(String.Format("The '{0}' format string is not supported.", format))
End Select
End Function
End Class
Public Module Example1
Public Sub Main1()
Dim temp1 As New Temperature(0D)
Console.WriteLine(temp1.ToString())
Console.WriteLine(temp1.ToString("G"))
Console.WriteLine(temp1.ToString("C"))
Console.WriteLine(temp1.ToString("F"))
Console.WriteLine(temp1.ToString("K"))
Dim temp2 As New Temperature(-40D)
Console.WriteLine(temp2.ToString())
Console.WriteLine(temp2.ToString("G"))
Console.WriteLine(temp2.ToString("C"))
Console.WriteLine(temp2.ToString("F"))
Console.WriteLine(temp2.ToString("K"))
Dim temp3 As New Temperature(16D)
Console.WriteLine(temp3.ToString())
Console.WriteLine(temp3.ToString("G"))
Console.WriteLine(temp3.ToString("C"))
Console.WriteLine(temp3.ToString("F"))
Console.WriteLine(temp3.ToString("K"))
Console.WriteLine(String.Format("The temperature is now {0:F}.", temp3))
End Sub
End Module
' The example displays the following output:
' 0.00 °C
' 0.00 °C
' 0.00 °C
' 32.00 °F
' 273.15 K
' -40.00 °C
' -40.00 °C
' -40.00 °C
' -40.00 °F
' 233.15 K
' 16.00 °C
' 16.00 °C
' 16.00 °C
' 60.80 °F
' 289.15 K
' The temperature is now 16.00 °C.
ã«ã¹ã¿ã æžåŒèšå®æåå
.NET ã§ã¯ãæšæºæžåŒæå®æååã®ã»ãã«ãæ°å€ããã³æ¥ä»ãšæå»ã®å€ã®äž¡æ¹ã®ã«ã¹ã¿ã æžåŒæå®æååãå®çŸ©ãããŠããŸãã ã«ã¹ã¿ã æžåŒæå®æååã¯ãå€ã®æåå圢åŒãå®çŸ©ãã 1 ã€ä»¥äžã®ã«ã¹ã¿ã æžåŒæå®åã§æ§æãããŸãã ããšãã°ã"yyyy/mm/dd hh:mm:ss.ffff t zzz" ãšããã«ã¹ã¿ã æ¥ææžåŒæå®æååã®å Žåãen-US ã«ã«ãã£ã§ã¯æ¥ä»ã "2008/11/15 07:45:00.0000 P -08:00" ãšããæåå圢åŒã«å€æãããŸãã ãŸãã"0000" ãšããã«ã¹ã¿ã æžåŒæå®æååã®å ŽåãæŽæ°å€ 12 㯠"0012" ã«å€æãããŸãã ã«ã¹ã¿ã æžåŒæå®æååã®äžèЧã«ã€ããŠã¯ãã ã«ã¹ã¿ã æ¥æåœ¢åŒæåå ãããã³ã ã«ã¹ã¿ã æ°å€åœ¢åŒæååããåç §ããŠãã ããã
æžåŒæå®æååãåäžã®ã«ã¹ã¿ã æžåŒæå®åã§æ§æãããå Žåã¯ãæšæºæžåŒæå®åãšæ··åããªãããã«ãæžåŒæå®åã®åã«ããŒã»ã³ã (%) èšå·ãä»ããå¿ èŠããããŸãã æ¬¡ã®äŸã§ã¯ã"M" ã«ã¹ã¿ã æžåŒæå®åã䜿çšããŠãç¹å®ã®æ¥ä»ã®æã衚ã 1 æ¡ãŸã㯠2 æ¡ã®æ°å€ã衚瀺ããŸãã
DateTime date1 = new DateTime(2009, 9, 8);
Console.WriteLine(date1.ToString("%M")); // Displays 9
Dim date1 As Date = #09/08/2009#
Console.WriteLine(date1.ToString("%M")) ' Displays 9
æ¥ä»ããã³æå»ã®å€ã®æšæºæžåŒæå®æååã®å€ãã¯ã DateTimeFormatInfo ãªããžã§ã¯ãã®ããããã£ã«ãã£ãŠå®çŸ©ãããŠããã«ã¹ã¿ã æžåŒæå®æååã®ãšã€ãªã¢ã¹ã§ãã ãŸããã«ã¹ã¿ã æžåŒæå®æååã䜿çšããããšã§ãæ°å€ãŸãã¯æ¥ä»ãšæå»ã®å€ã«å¯ŸããŠãæè»ã«ã¢ããªã±ãŒã·ã§ã³å®çŸ©ã®æžåŒãæå®ã§ããŸãã è€æ°ã®ã«ã¹ã¿ã æžåŒæå®åã 1 ã€ã®ã«ã¹ã¿ã æžåŒæå®æååã«çµåããããšã«ãã£ãŠãæ°å€ããã³æ¥ä»ãšæå»ã®å€ã®äž¡æ¹ã«å¯Ÿããã«ã¹ã¿ã ã®çµææååãç¬èªã«å®çŸ©ããããšãã§ããŸãã æ¬¡ã®äŸã§ã¯ãæã®ååãæ¥ä»ãããã³å¹Žã®åŸã«ããã£ãã§å²ãã§ææ¥ã衚瀺ããã«ã¹ã¿ã æžåŒæå®æååãå®çŸ©ããŠããŸãã
string customFormat = "MMMM dd, yyyy (dddd)";
DateTime date1 = new DateTime(2009, 8, 28);
Console.WriteLine(date1.ToString(customFormat));
// The example displays the following output if run on a system
// whose language is English:
// August 28, 2009 (Friday)
Dim customFormat As String = "MMMM dd, yyyy (dddd)"
Dim date1 As Date = #8/28/2009#
Console.WriteLine(date1.ToString(customFormat))
' The example displays the following output if run on a system
' whose language is English:
' August 28, 2009 (Friday)
次ã®äŸã§ã¯ãç±³åœã®æšæºçãª7æ¡ã®é»è©±çªå·ãšããŠãInt64 ã®å€ãåžå€å±çªãšå ±ã«è¡šç€ºããã«ã¹ã¿ã æžåŒãå®çŸ©ããŸãã
using System;
public class Example17
{
public static void Main()
{
long number = 8009999999;
string fmt = "000-000-0000";
Console.WriteLine(number.ToString(fmt));
}
}
// The example displays the following output:
// 800-999-9999
Module Example18
Public Sub Main18()
Dim number As Long = 8009999999
Dim fmt As String = "000-000-0000"
Console.WriteLine(number.ToString(fmt))
End Sub
End Module
' The example displays the following output:
' The example displays the following output:
' 800-999-9999
æšæºæžåŒæå®æååã¯ãéåžžãã¢ããªã±ãŒã·ã§ã³å®çŸ©åã®æžåŒèšå®ã®ããŒãºã®ã»ãšãã©ãåŠçã§ããŸãããã«ã¹ã¿ã æžåŒæå®åãå®çŸ©ããŠåãæžåŒèšå®ããããšãã§ããŸãã
æžåŒæå®æååãš .NET å
ãã¹ãŠã®æ°å€å (ã€ãŸããByteãDecimalãDoubleãInt16ãInt32ãInt64ãSByteãSingleãUInt16ãUInt32ãUInt64ãããã³ BigInteger å)ãDateTimeãDateTimeOffsetãTimeSpanãGuidããã¹ãŠã®åæåããæžåŒæå®æååã«ããæžåŒèšå®ã«å¯Ÿå¿ããŠããŸãã ååã§ãµããŒããããŠããç¹å®ã®æžåŒæå®æååã«ã€ããŠã¯ã次ã®èšäºãåç §ããŠãã ããã
| ã¿ã€ãã« | å®çŸ© |
|---|---|
| æšæºã®æ°å€æžåŒæå®æåå | æ°å€ã®äžè¬çãªæåå衚çŸãçæããæšæºæžåŒæååã«ã€ããŠèª¬æããŸãã |
| ã«ã¹ã¿ã æ°å€åœ¢åŒæåå | æ°å€ã«å¯Ÿããã¢ããªã±ãŒã·ã§ã³åºæã®æåå圢åŒãäœæããã«ã¹ã¿ã æžåŒæå®æååã«ã€ããŠèª¬æããŸãã |
| æšæºã®æ¥æåœ¢åŒæåå | DateTime ãš DateTimeOffset å€ã«å¯ŸããŠäžè¬çã«äœ¿çšãããæåå圢åŒãäœæããæšæºæžåŒæå®æååã«ã€ããŠèª¬æããŸãã |
| ã«ã¹ã¿ã æ¥æåœ¢åŒæåå | DateTime ãš DateTimeOffset å€ã«å¯Ÿããã¢ããªã±ãŒã·ã§ã³åºæã®æåå圢åŒãäœæããã«ã¹ã¿ã æžåŒæå®æååã«ã€ããŠèª¬æããŸãã |
| æšæºã®æéééæžåŒæå®æåå | æéééã«å¯ŸããŠäžè¬çã«äœ¿çšãããæåå圢åŒãäœæããæšæºæžåŒæå®æååã«ã€ããŠèª¬æããŸãã |
| ã«ã¹ã¿ã æéééæžåŒæå®æåå | æéééã«å¯Ÿããã¢ããªã±ãŒã·ã§ã³åºæã®æåå圢åŒãäœæããã«ã¹ã¿ã æžåŒæå®æååã«ã€ããŠèª¬æããŸãã |
| åæåæžåŒæå®æåå | åæåã®å€ã®æåå衚çŸãäœæããããã«äœ¿çšãããæšæºãã©ãŒãããæååã«ã€ããŠèª¬æããŸãã |
| Guid.ToString(String) | Guid å€ã®æšæºçæžåŒæå®æååã«ã€ããŠèª¬æããŸãã |
æžåŒãããã€ããŒã«ããã«ã«ãã£ã«äŸåããæžåŒèšå®
æžåŒæå®åãå©çšããããšã§ãªããžã§ã¯ãã®æžåŒãã«ã¹ã¿ãã€ãºã§ããŸãããå€ãã®å Žåãæå³ã®ãããªããžã§ã¯ãã®æåå圢åŒãçæããã«ã¯è¿œå ã®æžåŒèšå®æ
å ±ãå¿
èŠã§ãã ããšãã°ã"C" æšæºæžåŒæå®æååãŸã㯠"$ #,#.00" ãªã©ã®ã«ã¹ã¿ã æžåŒæå®æååã䜿çšããŠæ°åãé貚å€ãšããŠæžåŒèšå®ããå Žåãå°ãªããšããæ£ããé貚èšå·ãæ¡åºåãèšå·ãããã³å°æ°ç¹èšå·ã«ã€ããŠã®æ
å ±ãæžåŒèšå®ãããæååã«å«ããããšãã§ããå¿
èŠããããŸãã .NET ã§ã¯ããã®è¿œå ã®æžåŒèšå®æ
å ±ã¯ã IFormatProvider ã€ã³ã¿ãŒãã§ã€ã¹ãä»ããŠäœ¿çšã§ããããã«ãªããŸããããã¯ãæ°å€åãšæ¥ä»ãšæå»åã® ToString ã¡ãœããã® 1 ã€ä»¥äžã®ãªãŒããŒããŒãã®ãã©ã¡ãŒã¿ãŒãšããŠæäŸãããŸãã
IFormatProvider ã®å®è£
㯠.NET ã§äœ¿çšãããã«ã«ãã£åºæã®æžåŒæå®ããµããŒãããŸãã æ¬¡ã®äŸã¯ãç°ãªãã«ã«ãã£ã衚ã 3 ã€ã® IFormatProvider ãªããžã§ã¯ãã§æžåŒèšå®ãããŠããå Žåã«ããªããžã§ã¯ãã®æåå衚çŸãã©ã®ããã«å€åãããã瀺ããŠããŸãã
using System;
using System.Globalization;
public class Example18
{
public static void Main()
{
decimal value = 1603.42m;
Console.WriteLine(value.ToString("C3", new CultureInfo("en-US")));
Console.WriteLine(value.ToString("C3", new CultureInfo("fr-FR")));
Console.WriteLine(value.ToString("C3", new CultureInfo("de-DE")));
}
}
// The example displays the following output:
// $1,603.420
// 1 603,420 â¬
// 1.603,420 â¬
Imports System.Globalization
Public Module Example11
Public Sub Main11()
Dim value As Decimal = 1603.42D
Console.WriteLine(value.ToString("C3", New CultureInfo("en-US")))
Console.WriteLine(value.ToString("C3", New CultureInfo("fr-FR")))
Console.WriteLine(value.ToString("C3", New CultureInfo("de-DE")))
End Sub
End Module
' The example displays the following output:
' $1,603.420
' 1 603,420 â¬
' 1.603,420 â¬
IFormatProvider ã€ã³ã¿ãŒãã§ã€ã¹ã«ã¯ã GetFormat(Type)ãšãã 1 ã€ã®ã¡ãœãããå«ãŸããŠããŸãããã®ã¡ãœããã«ã¯ãæžåŒèšå®æ
å ±ãæäŸãããªããžã§ã¯ãã®åãæå®ãã 1 ã€ã®ãã©ã¡ãŒã¿ãŒããããŸãã ãã®ã¡ãœããããã®åã®ãªããžã§ã¯ããæäŸã§ããå Žåã¯ããããè¿ãããŸãã ãã以å€ã®å Žåã¯ãnull åç
§ (Visual Basic ã®å Žåã¯Nothing ) ãè¿ãããŸãã
IFormatProvider.GetFormat ã¯ã³ãŒã«ãã㯠ã¡ãœããã§ãã
ToString ãã©ã¡ãŒã¿ãŒãå«ã IFormatProvider ã¡ãœãã ãªãŒããŒããŒããåŒã³åºããšããã® GetFormat ãªããžã§ã¯ãã® IFormatProvider ã¡ãœãããåŒã³åºãããŸãã
GetFormat ã¡ãœããã¯ã formatType ãã©ã¡ãŒã¿ãŒã§æå®ããããå¿
èŠãªæžåŒèšå®æ
å ±ãæäŸãããªããžã§ã¯ãã ToString ã¡ãœããã«è¿ããŸãã
ããã€ãã®æžåŒèšå®ãŸãã¯æåå倿ã¡ãœããã«ã¯ã IFormatProvideråã®ãã©ã¡ãŒã¿ãŒãå«ãŸããŠããŸãããå€ãã®å Žåãã¡ãœãããåŒã³åºããããšããã©ã¡ãŒã¿ãŒã®å€ã¯ç¡èŠãããŸãã Type ã¡ãœããã«æž¡ããã IFormatProvider.GetFormat ãªããžã§ã¯ãã®ãã©ã¡ãŒã¿ãŒãšåã䜿çšããæžåŒæå®ã¡ãœããã®äžéšã次ã®è¡šã«ç€ºããŸãã
| ã¡ãœãã |
formatType ãã©ã¡ãŒã¿ãŒã®å |
|---|---|
æ°å€åã®ToString ã¡ãœãã |
System.Globalization.NumberFormatInfo |
æ¥ä»/æå»åã®ToString ã¡ãœãã |
System.Globalization.DateTimeFormatInfo |
| String.Format | System.ICustomFormatter |
| StringBuilder.AppendFormat | System.ICustomFormatter |
泚
æ°å€åããã³æ¥ä»/æå»åã® ToString ã¡ãœããã¯ãªãŒããŒããŒããããŸããã IFormatProvider ãã©ã¡ãŒã¿ãŒãå«ãŸããã®ã¯ãã®ãã¡ã®äžéšã®ãªãŒããŒããŒãã ãã§ãã ã¡ãœããã« IFormatProvideråã®ãã©ã¡ãŒã¿ãŒããªãå Žåã¯ã CultureInfo.CurrentCulture ããããã£ã«ãã£ãŠè¿ããããªããžã§ã¯ãã代ããã«æž¡ãããŸãã ããšãã°ãæ¢å®ã® Int32.ToString() ã¡ãœããã®åŒã³åºãã®å Žåã¯ãæçµçã«ã¯ Int32.ToString("G", System.Globalization.CultureInfo.CurrentCulture)ã®ãããªã¡ãœããåŒã³åºãã«ãªããŸãã
.NET ã«ã¯ãIFormatProvider ãå®è£ ããæ¬¡ã® 3 ã€ã®ã¯ã©ã¹ãçšæãããŠããŸãã
DateTimeFormatInfoããã®ã¯ã©ã¹ã¯ãç¹å®ã®ã«ã«ãã£ã®æ¥ä»ãšæå»ã®å€ã«å¯ŸããæžåŒèšå®æ å ±ãæäŸããŸãã 察å¿ãã IFormatProvider.GetFormat ã®å®è£ ã§ã¯ãããèªèº«ã®ã€ã³ã¹ã¿ã³ã¹ãè¿ãããŸãã
NumberFormatInfoããã®ã¯ã©ã¹ã¯ãç¹å®ã®ã«ã«ãã£ã®æ°å€ã«å¯ŸããæžåŒèšå®æ å ±ãæäŸããŸãã 察å¿ãã IFormatProvider.GetFormat ã®å®è£ ã§ã¯ãããèªèº«ã®ã€ã³ã¹ã¿ã³ã¹ãè¿ãããŸãã
CultureInfoã 察å¿ãã IFormatProvider.GetFormat ã®å®è£ ã§ã¯ãæ°å€ã«å¯ŸããæžåŒèšå®æ å ±ãæäŸãã NumberFormatInfo ãªããžã§ã¯ãããæ¥ä»ãšæå»ã®å€ã«å¯ŸããæžåŒèšå®æ å ±ãæäŸãã DateTimeFormatInfo ãªããžã§ã¯ãã®ãããããè¿ãããŸãã
ãŸãããããã®ã¯ã©ã¹ã®ãã¡ã®ããããã眮ãæããç¬èªã®æžåŒãããã€ããŒãå®è£
ã§ããŸãã ãã ããå®è£
ã® GetFormat ã¡ãœããã¯ãæžåŒèšå®æ
å ±ã ToString ã¡ãœããã«æž¡ãå¿
èŠãããå Žåãåã®è¡šã«äžèЧãããåã®ãªããžã§ã¯ããè¿ãå¿
èŠããããŸãã
æ°å€ã«å¯Ÿããæåã«é æ ®ããæžåŒèšå®
æ¢å®ã§ã¯ãæ°å€ã®æžåŒæå®ã¯ã«ã«ãã£ã«äŸåããŸãã æžåŒèšå®ã¡ãœãããåŒã³åºããšãã«ã«ã«ãã£ãæå®ããªãå Žåã¯ãçŸåšã®ã«ã«ãã£ã®æžåŒèšå®èŠåã䜿çšãããŸãã æ¬¡ã«ç€ºãäŸã§ã¯ãçŸåšã®ã«ã«ãã£ã 4 å倿ŽããåŸã«ãDecimal.ToString(String) ã¡ãœãããåŒã³åºããŸãã åã±ãŒã¹ã§ã¯ãçµæã®æååã¯ãçŸåšã®ã«ã«ãã£ã®æžåŒæå®èŠåãåæ ããŸãã ããã¯ãåæ°å€åã® ToString ã¡ãœãããžã®åŒã³åºããã ToString(String) ã¡ãœãããš ToString(String, IFormatProvider) ã¡ãœãããã©ããããããã§ãã
using System.Globalization;
public class Example6
{
public static void Main()
{
string[] cultureNames = { "en-US", "fr-FR", "es-MX", "de-DE" };
Decimal value = 1043.17m;
foreach (var cultureName in cultureNames) {
// Change the current culture.
CultureInfo.CurrentCulture = CultureInfo.CreateSpecificCulture(cultureName);
Console.WriteLine($"The current culture is {CultureInfo.CurrentCulture.Name}");
Console.WriteLine(value.ToString("C2"));
Console.WriteLine();
}
}
}
// The example displays the following output:
// The current culture is en-US
// $1,043.17
//
// The current culture is fr-FR
// 1 043,17 â¬
//
// The current culture is es-MX
// $1,043.17
//
// The current culture is de-DE
// 1.043,17 â¬
Imports System.Globalization
Module Example6
Public Sub Main6()
Dim cultureNames() As String = {"en-US", "fr-FR", "es-MX", "de-DE"}
Dim value As Decimal = 1043.17D
For Each cultureName In cultureNames
' Change the current culture.
CultureInfo.CurrentCulture = CultureInfo.CreateSpecificCulture(cultureName)
Console.WriteLine($"The current culture is {CultureInfo.CurrentCulture.Name}")
Console.WriteLine(value.ToString("C2"))
Console.WriteLine()
Next
End Sub
End Module
' The example displays the following output:
' The current culture is en-US
' $1,043.17
'
' The current culture is fr-FR
' 1 043,17 â¬
'
' The current culture is es-MX
' $1,043.17
'
' The current culture is de-DE
' 1.043,17 â¬
ãŸãã ToString ãã©ã¡ãŒã¿ãŒãæã€ provider ãªãŒããŒããŒããåŒã³åºããŠã次ã®ã©ã¡ãããæž¡ãããšã«ãããç¹å®ã«ã«ãã£ã®æ°å€ãæžåŒæå®ããããšãã§ããŸãã
䜿çšãããæžåŒæå®èŠåã®ã«ã«ãã£ã衚ã CultureInfo ãªããžã§ã¯ãã ãã® CultureInfo.GetFormat ã¡ãœããã¯ã CultureInfo.NumberFormat ããããã£ã®å€ãè¿ããŸãããã®ããããã£ã¯ãæ°å€ã«ã«ã«ãã£åºæã®æžåŒæå®æ å ±ãæäŸãã NumberFormatInfo ãªããžã§ã¯ãã§ãã
䜿çšãããã«ã«ãã£åºæã®æžåŒæå®èŠåãå®çŸ©ãã NumberFormatInfo ãªããžã§ã¯ãã ãã® GetFormat ã¡ãœããã§ã¯ãããèªèº«ã®ã€ã³ã¹ã¿ã³ã¹ãè¿ãããŸãã
次ã®äŸã§ã¯ãæµ®åå°æ°ç¹æ°ãæžåŒæå®ããéã«ãè±èª (ç±³åœ) ãšè±èª (è±åœ) ã®ã«ã«ãã£ããã³ãã©ã³ã¹èªãšãã·ã¢èªã®ãã¥ãŒãã©ã« ã«ã«ãã£ã衚ã NumberFormatInfo ãªããžã§ã¯ãã䜿çšããŸãã
using System.Globalization;
public class Example7
{
public static void Main()
{
double value = 1043.62957;
string[] cultureNames = { "en-US", "en-GB", "ru", "fr" };
foreach (string? name in cultureNames)
{
NumberFormatInfo nfi = CultureInfo.CreateSpecificCulture(name).NumberFormat;
Console.WriteLine("{0,-6} {1}", name + ":", value.ToString("N3", nfi));
}
}
}
// The example displays the following output:
// en-US: 1,043.630
// en-GB: 1,043.630
// ru: 1 043,630
// fr: 1 043,630
Imports System.Globalization
Module Example7
Public Sub Main7()
Dim value As Double = 1043.62957
Dim cultureNames() As String = {"en-US", "en-GB", "ru", "fr"}
For Each name In cultureNames
Dim nfi As NumberFormatInfo = CultureInfo.CreateSpecificCulture(name).NumberFormat
Console.WriteLine("{0,-6} {1}", name + ":", value.ToString("N3", nfi))
Next
End Sub
End Module
' The example displays the following output:
' en-US: 1,043.630
' en-GB: 1,043.630
' ru: 1 043,630
' fr: 1 043,630
æ¥ä»ãšæå»ã®å€ã®ã«ã«ãã£ã«äŸåããæžåŒèšå®
æ¢å®ã§ã¯ãæ¥æã®å€ã®æžåŒæå®ã¯ã«ã«ãã£ã«äŸåããŸãã æžåŒèšå®ã¡ãœãããåŒã³åºããšãã«ã«ã«ãã£ãæå®ããªãå Žåã¯ãçŸåšã®ã«ã«ãã£ã®æžåŒèšå®èŠåã䜿çšãããŸãã æ¬¡ã«ç€ºãäŸã§ã¯ãçŸåšã®ã«ã«ãã£ã 4 å倿ŽããåŸã«ãDateTime.ToString(String) ã¡ãœãããåŒã³åºããŸãã åã±ãŒã¹ã§ã¯ãçµæã®æååã¯ãçŸåšã®ã«ã«ãã£ã®æžåŒæå®èŠåãåæ ããŸãã ããã¯ã DateTime.ToString()ã DateTime.ToString(String)ã DateTimeOffset.ToString()ã DateTimeOffset.ToString(String) ã®åã¡ãœãããã DateTime.ToString(String, IFormatProvider) ã¡ãœããããã³ DateTimeOffset.ToString(String, IFormatProvider) ã¡ãœãããžã®åŒã³åºããã©ããããããã§ãã
using System.Globalization;
public class Example4
{
public static void Main()
{
string[] cultureNames = { "en-US", "fr-FR", "es-MX", "de-DE" };
DateTime dateToFormat = new DateTime(2012, 5, 28, 11, 30, 0);
foreach (var cultureName in cultureNames) {
// Change the current culture.
CultureInfo.CurrentCulture = CultureInfo.CreateSpecificCulture(cultureName);
Console.WriteLine($"The current culture is {CultureInfo.CurrentCulture.Name}");
Console.WriteLine(dateToFormat.ToString("F"));
Console.WriteLine();
}
}
}
// The example displays the following output:
// The current culture is en-US
// Monday, May 28, 2012 11:30:00 AM
//
// The current culture is fr-FR
// lundi 28 mai 2012 11:30:00
//
// The current culture is es-MX
// lunes, 28 de mayo de 2012 11:30:00 a.m.
//
// The current culture is de-DE
// Montag, 28. Mai 2012 11:30:00
Imports System.Globalization
Imports System.Threading
Module Example4
Public Sub Main4()
Dim cultureNames() As String = {"en-US", "fr-FR", "es-MX", "de-DE"}
Dim dateToFormat As Date = #5/28/2012 11:30AM#
For Each cultureName In cultureNames
' Change the current culture.
CultureInfo.CurrentCulture = CultureInfo.CreateSpecificCulture(cultureName)
Console.WriteLine($"The current culture is {CultureInfo.CurrentCulture.Name}")
Console.WriteLine(dateToFormat.ToString("F"))
Console.WriteLine()
Next
End Sub
End Module
' The example displays the following output:
' The current culture is en-US
' Monday, May 28, 2012 11:30:00 AM
'
' The current culture is fr-FR
' lundi 28 mai 2012 11:30:00
'
' The current culture is es-MX
' lunes, 28 de mayo de 2012 11:30:00 a.m.
'
' The current culture is de-DE
' Montag, 28. Mai 2012 11:30:00
DateTime.ToString ãã©ã¡ãŒã¿ãŒãæã€ DateTimeOffset.ToString ãŸã㯠provider ãªãŒããŒããŒããåŒã³åºããŠã次ã®ã©ã¡ãããæž¡ãããšã«ãããç¹å®ã«ã«ãã£ã®æ¥æã®å€ãæžåŒæå®ããããšãã§ããŸãã
䜿çšãããæžåŒæå®èŠåã®ã«ã«ãã£ã衚ã CultureInfo ãªããžã§ã¯ãã ãã® CultureInfo.GetFormat ã¡ãœããã¯ã CultureInfo.DateTimeFormat ããããã£ã®å€ãè¿ããŸãããã®ããããã£ã¯ãæ¥æã®å€ã«ã«ã«ãã£åºæã®æžåŒæå®æ å ±ãæäŸãã DateTimeFormatInfo ãªããžã§ã¯ãã§ãã
䜿çšãããã«ã«ãã£åºæã®æžåŒæå®èŠåãå®çŸ©ãã DateTimeFormatInfo ãªããžã§ã¯ãã ãã® GetFormat ã¡ãœããã§ã¯ãããèªèº«ã®ã€ã³ã¹ã¿ã³ã¹ãè¿ãããŸãã
次ã®äŸã§ã¯ãæ¥ä»ãæžåŒæå®ããéã«ãè±èª (ç±³åœ) ãšè±èª (è±åœ) ã®ã«ã«ãã£ããã³ãã©ã³ã¹èªãšãã·ã¢èªã®ãã¥ãŒãã©ã« ã«ã«ãã£ã衚ã DateTimeFormatInfo ãªããžã§ã¯ãã䜿çšããŸãã
using System.Globalization;
public class Example5
{
public static void Main()
{
DateTime dat1 = new(2012, 5, 28, 11, 30, 0);
string[] cultureNames = { "en-US", "en-GB", "ru", "fr" };
foreach (var name in cultureNames) {
DateTimeFormatInfo dtfi = CultureInfo.CreateSpecificCulture(name).DateTimeFormat;
Console.WriteLine($"{name}: {dat1.ToString(dtfi)}");
}
}
}
// The example displays the following output:
// en-US: 5/28/2012 11:30:00 AM
// en-GB: 28/05/2012 11:30:00
// ru: 28.05.2012 11:30:00
// fr: 28/05/2012 11:30:00
Imports System.Globalization
Module Example5
Public Sub Main5()
Dim dat1 As Date = #5/28/2012 11:30AM#
Dim cultureNames() As String = {"en-US", "en-GB", "ru", "fr"}
For Each name In cultureNames
Dim dtfi As DateTimeFormatInfo = CultureInfo.CreateSpecificCulture(name).DateTimeFormat
Console.WriteLine($"{name}: {dat1.ToString(dtfi)}")
Next
End Sub
End Module
' The example displays the following output:
' en-US: 5/28/2012 11:30:00 AM
' en-GB: 28/05/2012 11:30:00
' ru: 28.05.2012 11:30:00
' fr: 28/05/2012 11:30:00
IFormattable ã€ã³ã¿ãŒãã§ã€ã¹
éåžžãæžåŒæå®æååããã³ ToString ãã©ã¡ãŒã¿ãŒã䜿çšã㊠IFormatProvider ã¡ãœããããªãŒããŒããŒãããåã¯ã IFormattable ã€ã³ã¿ãŒãã§ã€ã¹ãå®è£
ããŸãã ãã®ã€ã³ã¿ãŒãã§ã€ã¹ã«ã¯ã IFormattable.ToString(String, IFormatProvider)ãšããåäžã®ã¡ã³ããŒããããŸãããã®ã¡ã³ããŒã«ã¯ããã©ã¡ãŒã¿ãŒãšããŠæžåŒæå®æååãšæžåŒãããã€ããŒã®äž¡æ¹ãå«ãŸããŠããŸãã
ã¢ããªã±ãŒã·ã§ã³å®çŸ©ã®ã¯ã©ã¹ã« IFormattable ã€ã³ã¿ãŒãã§ã€ã¹ãå®è£ ããå Žåã2 ã€ã®å©ç¹ããããŸãã
Convert ã¯ã©ã¹ã«ããæåå倿ããµããŒããããŸãã Convert.ToString(Object) ã¡ãœããããã³ Convert.ToString(Object, IFormatProvider) ã¡ãœãããåŒã³åºããšãèªåçã« IFormattable ã®å®è£ ãåŒã³åºãããŸãã
è€åæžåŒæå®ããµããŒããããŸãã æžåŒæå®æååãå«ãæžåŒæå®é ç®ã䜿çšããŠã«ã¹ã¿ã ã®åã®æžåŒãèšå®ããå Žåã«ãå ±éèšèªã©ã³ã¿ã€ã ã«ãã£ãŠèªåçã« IFormattable ã®å®è£ ãåŒã³åºãããããã«æžåŒæå®æååãæž¡ãããŸãã String.Format ã¡ãœããã Console.WriteLineã¡ãœããã䜿çšããè€åæžåŒæå®ã®è©³çްã«ã€ããŠã¯ãã è€åæžåŒæå® ãã®ã»ã¯ã·ã§ã³ãåç §ããŠãã ããã
次ã®äŸã§ã¯ã Temperature ã€ã³ã¿ãŒãã§ã€ã¹ãå®è£
ãã IFormattable ã¯ã©ã¹ãå®çŸ©ããŠããŸãã ãã®ã¯ã©ã¹ã§ã¯ãæž©åºŠãææ°ã§è¡šç€ºããããã« "C" æžåŒæå®åãŸã㯠"G" æžåŒæå®åãè¯æ°ã§è¡šç€ºããããã« "F" æžåŒæå®åãã±ã«ãã³ã§è¡šç€ºããããã« "K" æžåŒæå®åããããããµããŒãããŠããŸãã
using System;
using System.Globalization;
namespace HotAndCold
{
public class Temperature : IFormattable
{
private decimal m_Temp;
public Temperature(decimal temperature)
{
this.m_Temp = temperature;
}
public decimal Celsius
{
get { return this.m_Temp; }
}
public decimal Kelvin
{
get { return this.m_Temp + 273.15m; }
}
public decimal Fahrenheit
{
get { return Math.Round((decimal)this.m_Temp * 9 / 5 + 32, 2); }
}
public override string ToString()
{
return this.ToString("G", null);
}
public string ToString(string format)
{
return this.ToString(format, null);
}
public string ToString(string format, IFormatProvider provider)
{
// Handle null or empty arguments.
if (String.IsNullOrEmpty(format))
format = "G";
// Remove any white space and covert to uppercase.
format = format.Trim().ToUpperInvariant();
if (provider == null)
provider = NumberFormatInfo.CurrentInfo;
switch (format)
{
// Convert temperature to Fahrenheit and return string.
case "F":
return this.Fahrenheit.ToString("N2", provider) + "°F";
// Convert temperature to Kelvin and return string.
case "K":
return this.Kelvin.ToString("N2", provider) + "K";
// Return temperature in Celsius.
case "C":
case "G":
return this.Celsius.ToString("N2", provider) + "°C";
default:
throw new FormatException(String.Format("The '{0}' format string is not supported.", format));
}
}
}
Public Class Temperature : Implements IFormattable
Private m_Temp As Decimal
Public Sub New(temperature As Decimal)
Me.m_Temp = temperature
End Sub
Public ReadOnly Property Celsius() As Decimal
Get
Return Me.m_Temp
End Get
End Property
Public ReadOnly Property Kelvin() As Decimal
Get
Return Me.m_Temp + 273.15D
End Get
End Property
Public ReadOnly Property Fahrenheit() As Decimal
Get
Return Math.Round(CDec(Me.m_Temp * 9 / 5 + 32), 2)
End Get
End Property
Public Overrides Function ToString() As String
Return Me.ToString("G", Nothing)
End Function
Public Overloads Function ToString(format As String) As String
Return Me.ToString(format, Nothing)
End Function
Public Overloads Function ToString(format As String, provider As IFormatProvider) As String _
Implements IFormattable.ToString
' Handle null or empty arguments.
If String.IsNullOrEmpty(format) Then format = "G"
' Remove any white space and convert to uppercase.
format = format.Trim().ToUpperInvariant()
If provider Is Nothing Then provider = NumberFormatInfo.CurrentInfo
Select Case format
' Convert temperature to Fahrenheit and return string.
Case "F"
Return Me.Fahrenheit.ToString("N2", provider) & "°F"
' Convert temperature to Kelvin and return string.
Case "K"
Return Me.Kelvin.ToString("N2", provider) & "K"
' Return temperature in Celsius.
Case "C", "G"
Return Me.Celsius.ToString("N2", provider) & "°C"
Case Else
Throw New FormatException(String.Format($"The '{format}' format string is not supported."))
End Select
End Function
End Class
次ã®äŸã§ã¯ã Temperature ãªããžã§ã¯ããã€ã³ã¹ã¿ã³ã¹åããŠããŸãã ãã®åŸã ToString ã¡ãœãããåŒã³åºããããã€ãã®è€åæžåŒæå®æååã䜿çšã㊠Temperature ãªããžã§ã¯ãã®ããŸããŸãªæåå圢åŒãååŸããŸãã ããã«ããããã®åã¡ãœããåŒã³åºãã§ã IFormattable ã¯ã©ã¹ã® Temperature å®è£
ãåŒã³åºããŠããŸãã
public class Example11
{
public static void Main()
{
CultureInfo.CurrentCulture = CultureInfo.GetCultureInfo("en-US");
Temperature temp = new Temperature(22m);
Console.WriteLine(Convert.ToString(temp, new CultureInfo("ja-JP")));
Console.WriteLine($"Temperature: {temp:K}");
Console.WriteLine($"Temperature: {temp:F}");
Console.WriteLine(String.Format(new CultureInfo("fr-FR"), "Temperature: {0:F}", temp));
}
}
// The example displays the following output:
// 22.00°C
// Temperature: 295.15K
// Temperature: 71.60°F
// Temperature: 71,60°F
Public Module Example12
Public Sub Main12()
Dim temp As New Temperature(22D)
CultureInfo.CurrentCulture = CultureInfo.GetCultureInfo("en-US")
Console.WriteLine(Convert.ToString(temp, New CultureInfo("ja-JP")))
Console.WriteLine($"Temperature: {temp:K}")
Console.WriteLine($"Temperature: {temp:F}")
Console.WriteLine(String.Format(New CultureInfo("fr-FR"), $"Temperature: {temp:F}"))
End Sub
End Module
' The example displays the following output:
' 22.00°C
' Temperature: 295.15K
' Temperature: 71.60°F
' Temperature: 71,60°F
è€åæžåŒæå®
String.FormatãStringBuilder.AppendFormatãªã©ã®äžéšã®ã¡ãœããã§ã¯ãè€åæžåŒããµããŒããããŠããŸãã è€åæžåŒæå®æååã¯äžçš®ã®ãã³ãã¬ãŒãã§ã0 å以äžã®ãªããžã§ã¯ãã®æåå圢åŒãçµã¿èŸŒãŸããåäžã®æååãè¿ããŸãã åãªããžã§ã¯ãã¯ãã€ã³ããã¯ã¹ä»ãã®æžåŒæå®é
ç®ã«ãã£ãŠãè€åæžåŒæå®æååã§è¡šçŸãããŸãã æžåŒæå®é
ç®ã®ã€ã³ããã¯ã¹ã¯ãããã衚ããªããžã§ã¯ãã®ã¡ãœããã®ãã©ã¡ãŒã¿ãŒ ãªã¹ãå
ã®äœçœ®ãšå¯Ÿå¿ããŠããŸãã ã€ã³ããã¯ã¹ã¯ 0 ããå§ãŸããŸãã ããšãã°ã String.Format ã¡ãœããã®æ¬¡ã®ã¡ãœããåŒã³åºãã§ã¯ãæåã®æžåŒæå®é
ç® {0:D}㯠thatDateã®æåå圢åŒã«ã2 çªç®ã®æžåŒæå®é
ç® {1}㯠item1ã®æåå圢åŒã«ã3 çªç®ã®æžåŒæå®é
ç® {2:C2}㯠item1.Valueã®æåå圢åŒã«çœ®ãæããããŸãã
result = String.Format("On {0:d}, the inventory of {1} was worth {2:C2}.",
thatDate, item1, item1.Value);
Console.WriteLine(result);
// The example displays output like the following if run on a system
// whose current culture is en-US:
// On 5/1/2009, the inventory of WidgetA was worth $107.44.
result = String.Format("On {0:d}, the inventory of {1} was worth {2:C2}.",
thatDate, item1, item1.Value)
Console.WriteLine(result)
' The example displays output like the following if run on a system
' whose current culture is en-US:
' On 5/1/2009, the inventory of WidgetA was worth $107.44.
æžåŒé ç®ãããã«å¯Ÿå¿ãããªããžã§ã¯ãã®æåå圢åŒã«çœ®æããããšã«å ããŠãæžåŒé ç®ã¯ä»¥äžãå¶åŸ¡ããããšãã§ããŸãã
ãªããžã§ã¯ããæååãšããŠè¡šçŸããç¹å®ã®æ¹æ³ (ãªããžã§ã¯ãã IFormattable ã€ã³ã¿ãŒãã§ã€ã¹ãå®è£ ããæžåŒæååããµããŒãããå Žå)ã ããã¯ã
:(ã³ãã³) ä»ãã®æžåŒé ç®ã®ã€ã³ããã¯ã¹ã«ãæå¹ãªæžåŒæååãç¶ããããšã«ãããŸãã åã®äŸã§ã¯ã"d" (çãæ¥ä»ãã¿ãŒã³) æžåŒæå®æåå (ããšãã°ã{0:d}) ã§æ¥ä»å€ãæžåŒèšå®ããæ°å€ã "C2" æžåŒæå®æåå (ããšãã°ã{2:C2}) ã§æžåŒèšå®ããŠã2 æ¡ã®å°æ°éšãæã€é貚å€ãšããŠæ°å€ã衚ããŸãããªããžã§ã¯ãã®æåå圢åŒãå«ããã£ãŒã«ãã®å¹ ãããã³ãã®ãã£ãŒã«ãã®æåå圢åŒã®é 眮ã ããã¯ãæžåŒé ç®ã®ã€ã³ããã¯ã¹ã«
,ïŒã³ã³ãïŒãç¶ãããã®åŸã«ãã£ãŒã«ãã®å¹ ãæå®ããããšã§è¡ããŸãã ãã£ãŒã«ãå¹ ãæ£ã®å€ã®å Žåãæååã¯ãã£ãŒã«ãå ã§å³æãã«ãªãããã£ãŒã«ãå¹ ãè² ã®å€ã®å Žåã¯å·Šæãã«ãªããŸãã æ¬¡ã®äŸã§ã¯ã20 æåã®ãã£ãŒã«ãã§æ¥ä»ã®å€ãå·Šæãã«ãã11 æåã®ãã£ãŒã«ãã§ã1 æ¡ã®å°æ°éšãå«ã 10 鲿°å€ã峿ãã«ããŸããDateTime startDate = new DateTime(2015, 8, 28, 6, 0, 0); decimal[] temps = { 73.452m, 68.98m, 72.6m, 69.24563m, 74.1m, 72.156m, 72.228m }; Console.WriteLine("{0,-20} {1,11}\n", "Date", "Temperature"); for (int ctr = 0; ctr < temps.Length; ctr++) Console.WriteLine("{0,-20:g} {1,11:N1}", startDate.AddDays(ctr), temps[ctr]); // The example displays the following output: // Date Temperature // // 8/28/2015 6:00 AM 73.5 // 8/29/2015 6:00 AM 69.0 // 8/30/2015 6:00 AM 72.6 // 8/31/2015 6:00 AM 69.2 // 9/1/2015 6:00 AM 74.1 // 9/2/2015 6:00 AM 72.2 // 9/3/2015 6:00 AM 72.2Dim startDate As New Date(2015, 8, 28, 6, 0, 0) Dim temps() As Decimal = {73.452, 68.98, 72.6, 69.24563, 74.1, 72.156, 72.228} Console.WriteLine("{0,-20} {1,11}", "Date", "Temperature") Console.WriteLine() For ctr As Integer = 0 To temps.Length - 1 Console.WriteLine("{0,-20:g} {1,11:N1}", startDate.AddDays(ctr), temps(ctr)) Next ' The example displays the following output: ' Date Temperature ' ' 8/28/2015 6:00 AM 73.5 ' 8/29/2015 6:00 AM 69.0 ' 8/30/2015 6:00 AM 72.6 ' 8/31/2015 6:00 AM 69.2 ' 9/1/2015 6:00 AM 74.1 ' 9/2/2015 6:00 AM 72.2 ' 9/3/2015 6:00 AM 72.2é 眮æååã³ã³ããŒãã³ããšæžåŒæå®æååã³ã³ããŒãã³ãã®äž¡æ¹ãååšããå Žåãåè ã¯åŸè (ããšãã°ã
{0,-20:g}) ã®åã«ãããŸãã
è€åæžåŒæå®ã®è©³çްã«ã€ããŠã¯ãã è€åæžåŒæå®ããåç §ããŠãã ããã
ICustomFormatter ã䜿çšããã«ã¹ã¿ã æžåŒèšå®
String.Format(IFormatProvider, String, Object[]) ããã³ StringBuilder.AppendFormat(IFormatProvider, String, Object[])ã® 2 ã€ã®è€åæžåŒæå®ã¡ãœããã«ã¯ãã«ã¹ã¿ã æžåŒèšå®ããµããŒãããŠããæžåŒãããã€ã㌠ãã©ã¡ãŒã¿ãŒãå«ãŸããŠããŸãã ãããã®æžåŒæå®ã¡ãœããã®ãããããåŒã³åºããšãæžåŒãããã€ããŒã® Type ã¡ãœããã« ICustomFormatter ã€ã³ã¿ãŒãã§ã€ã¹ã衚ã GetFormat ãªããžã§ã¯ããæž¡ãããŸãã æ¬¡ã«ã GetFormat ã¡ãœããã«ãã£ãŠãã«ã¹ã¿ã æžåŒèšå®ãæäŸãã ICustomFormatter ã®å®è£ ãè¿ãããŸãã
ICustomFormatter ã€ã³ã¿ãŒãã§ã€ã¹ã«ã¯ã Format(String, Object, IFormatProvider)ãšããåäžã®ã¡ãœããããããŸãããã®ã¡ãœããã¯ãè€åæžåŒæå®æååã®æžåŒæå®é
ç®ããšã« 1 åãè€åæžåŒæå®ã¡ãœããã«ãã£ãŠèªåçã«åŒã³åºãããŸãã
Format(String, Object, IFormatProvider) ã¡ãœããã«ã¯ã3 ã€ã®ãã©ã¡ãŒã¿ãŒããããŸããæžåŒæå®é
ç®ã® formatString åŒæ°ãè¡šãæžåŒæå®æååãæžåŒãèšå®ãããªããžã§ã¯ããããã³æžåŒæå®ãµãŒãã¹ãæäŸãã IFormatProvider ãªããžã§ã¯ãã® 3 ã€ã§ãã éåžžã¯ã ICustomFormatter ãå®è£
ããã¯ã©ã¹ã§ã¯ IFormatProviderãå®è£
ããããããã®æåŸã®ãã©ã¡ãŒã¿ãŒã¯ã«ã¹ã¿ã æžåŒæå®ã¯ã©ã¹èªäœãžã®åç
§ã«ãªããŸãã ãã®ã¡ãœããã¯ãæžåŒãèšå®ãããªããžã§ã¯ãã®ã«ã¹ã¿ã æžåŒã®æåå圢åŒãè¿ããŸãã ã¡ãœããããªããžã§ã¯ãã®æžåŒãèšå®ã§ããªãå Žåã¯ãnull åç
§ (Visual Basic ã§ã¯Nothing ) ãè¿ãå¿
èŠããããŸãã
æŽæ°å€ã 2 æ¡ã® 16 é²å€ãšããã«ç¶ã 1 ã€ã®ç©ºçœã®ã·ãŒã±ã³ã¹ãšããŠè¡šç€ºããã ICustomFormatter ãšããååã® ByteByByteFormatter ã®å®è£
ã®äŸã次ã«ç€ºããŸãã
public class ByteByByteFormatter : IFormatProvider, ICustomFormatter
{
public object? GetFormat(Type? formatType)
{
if (formatType == typeof(ICustomFormatter))
return this;
else
return null;
}
public string Format(string? format, object? arg,
IFormatProvider? formatProvider)
{
if ((formatProvider is not null) && !formatProvider.Equals(this)) return "";
// Handle only hexadecimal format string.
if ((format is not null) && !format.StartsWith("X")) return "";
byte[] bytes;
// Handle only integral types.
if (arg is Int16)
bytes = BitConverter.GetBytes((Int16)arg);
else if (arg is Int32)
bytes = BitConverter.GetBytes((Int32)arg);
else if (arg is Int64)
bytes = BitConverter.GetBytes((Int64)arg);
else if (arg is UInt16)
bytes = BitConverter.GetBytes((UInt16)arg);
else if (arg is UInt32)
bytes = BitConverter.GetBytes((UInt32)arg);
else if (arg is UInt64)
bytes = BitConverter.GetBytes((UInt64)arg);
else
return "";
string output= "";
for (int ctr = bytes.Length - 1; ctr >= 0; ctr--)
output += string.Format("{0:X2} ", bytes[ctr]);
return output.Trim();
}
}
Public Class ByteByByteFormatter : Implements IFormatProvider, ICustomFormatter
Public Function GetFormat(formatType As Type) As Object _
Implements IFormatProvider.GetFormat
If formatType Is GetType(ICustomFormatter) Then
Return Me
Else
Return Nothing
End If
End Function
Public Function Format(fmt As String, arg As Object,
formatProvider As IFormatProvider) As String _
Implements ICustomFormatter.Format
If Not formatProvider.Equals(Me) Then Return Nothing
' Handle only hexadecimal format string.
If Not fmt.StartsWith("X") Then
Return Nothing
End If
' Handle only integral types.
If Not typeof arg Is Byte AndAlso
Not typeof arg Is Int16 AndAlso
Not typeof arg Is Int32 AndAlso
Not typeof arg Is Int64 AndAlso
Not typeof arg Is SByte AndAlso
Not typeof arg Is UInt16 AndAlso
Not typeof arg Is UInt32 AndAlso
Not typeof arg Is UInt64 Then _
Return Nothing
Dim bytes() As Byte = BitConverter.GetBytes(arg)
Dim output As String = Nothing
For ctr As Integer = bytes.Length - 1 To 0 Step -1
output += String.Format("{0:X2} ", bytes(ctr))
Next
Return output.Trim()
End Function
End Class
ByteByByteFormatter ã¯ã©ã¹ã䜿çšããŠæŽæ°å€ã®æžåŒãèšå®ããäŸã次ã«ç€ºããŸãã
ICustomFormatter.Format ã¡ãœããã¯ã2 çªç®ã®String.Format(IFormatProvider, String, Object[]) ã¡ãœããåŒã³åºãã§è€æ°ååŒã³åºãããæ¢å®ã®NumberFormatInfo ãããã€ããŒã 3 çªç®ã®ã¡ãœããåŒã³åºãã§äœ¿çšãããŸãã
ByteByByteFormatter.Format ã¡ãœãã㯠"N0" æžåŒæå®æååãèªèãããnull åç
§ãè¿ããŸã (Visual Basic ã§ã¯Nothing )ã
public class Example10
{
public static void Main()
{
long value = 3210662321;
byte value1 = 214;
byte value2 = 19;
Console.WriteLine(string.Format(new ByteByByteFormatter(), "{0:X}", value));
Console.WriteLine(string.Format(new ByteByByteFormatter(), "{0:X} And {1:X} = {2:X} ({2:000})",
value1, value2, value1 & value2));
Console.WriteLine(string.Format(new ByteByByteFormatter(), "{0,10:N0}", value));
}
}
// The example displays the following output:
// 00 00 00 00 BF 5E D1 B1
// 00 D6 And 00 13 = 00 12 (018)
// 3,210,662,321
Public Module Example10
Public Sub Main10()
Dim value As Long = 3210662321
Dim value1 As Byte = 214
Dim value2 As Byte = 19
Console.WriteLine((String.Format(New ByteByByteFormatter(), "{0:X}", value)))
Console.WriteLine((String.Format(New ByteByByteFormatter(), "{0:X} And {1:X} = {2:X} ({2:000})",
value1, value2, value1 And value2)))
Console.WriteLine(String.Format(New ByteByByteFormatter(), "{0,10:N0}", value))
End Sub
End Module
' The example displays the following output:
' 00 00 00 00 BF 5E D1 B1
' 00 D6 And 00 13 = 00 12 (018)
' 3,210,662,321
é¢é£é ç®
| ã¿ã€ãã« | å®çŸ© |
|---|---|
| æšæºã®æ°å€æžåŒæå®æåå | æ°å€ã®äžè¬çãªæåå衚çŸãçæããæšæºæžåŒæååã«ã€ããŠèª¬æããŸãã |
| ã«ã¹ã¿ã æ°å€åœ¢åŒæåå | æ°å€ã«å¯Ÿããã¢ããªã±ãŒã·ã§ã³åºæã®æåå圢åŒãäœæããã«ã¹ã¿ã æžåŒæå®æååã«ã€ããŠèª¬æããŸãã |
| æšæºã®æ¥æåœ¢åŒæåå | DateTime å€ã«å¯ŸããŠäžè¬çã«äœ¿çšãããæåå圢åŒãäœæããæšæºæžåŒæå®æååã«ã€ããŠèª¬æããŸãã |
| ã«ã¹ã¿ã æ¥æåœ¢åŒæåå | DateTime å€ã«å¯Ÿããã¢ããªã±ãŒã·ã§ã³åºæã®æåå圢åŒãäœæããã«ã¹ã¿ã æžåŒæå®æååã«ã€ããŠèª¬æããŸãã |
| æšæºã®æéééæžåŒæå®æåå | æéééã«å¯ŸããŠäžè¬çã«äœ¿çšãããæåå圢åŒãäœæããæšæºæžåŒæå®æååã«ã€ããŠèª¬æããŸãã |
| ã«ã¹ã¿ã æéééæžåŒæå®æåå | æéééã«å¯Ÿããã¢ããªã±ãŒã·ã§ã³åºæã®æåå圢åŒãäœæããã«ã¹ã¿ã æžåŒæå®æååã«ã€ããŠèª¬æããŸãã |
| åæåæžåŒæå®æåå | åæåã®å€ã®æåå衚çŸãäœæããããã«äœ¿çšãããæšæºãã©ãŒãããæååã«ã€ããŠèª¬æããŸãã |
| è€åæžåŒæå® | æååã« 1 ã€ä»¥äžã®æžåŒæå®ãããå€ãåãèŸŒãæ¹æ³ã«ã€ããŠèª¬æããŸãã ãã®æååã¯ãã³ã³ãœãŒã«ã«è¡šç€ºããããã¹ããªãŒã ã«æžã蟌ãã ãã§ããŸãã |
| æååã®è§£æ | ãªããžã§ã¯ãã®æåå衚çŸã«ãã£ãŠæå®ãããå€ã«ãªããžã§ã¯ããåæåããæ¹æ³ã«ã€ããŠèª¬æããŸãã è§£æã¯æžåŒèšå®ã®éã®æäœã§ãã |