次の方法で共有


Strings.Format(Object, String) メソッド

定義

式の書式に含まれる命令に従って書式設定された文字列 String 返します。

public static string Format (object? Expression, string? Style = "");
public static string Format (object Expression, string Style = "");
static member Format : obj * string -> string
Public Function Format (Expression As Object, Optional Style As String = "") As String

パラメーター

Expression
Object

必須。 任意の有効な式。

Style
String

随意。 有効な名前付き書式またはユーザー定義形式 String 式。

戻り値

書式 String 式に含まれる命令に従って書式設定された文字列。

この例では、Format 関数を使用して、String 形式とユーザー定義形式の両方を使用して値を書式設定するさまざまな使用方法を示します。 日付区切り記号 (/)、時刻区切り記号 (:)、AM/PM インジケーター (ttt) の場合、システムによって表示される実際の書式設定された出力は、コードで使用されているロケール設定によって異なります。 開発環境で時刻と日付が表示される場合は、コード ロケールの短い時刻形式と短い日付形式が使用されます。

手記

24 時間制を使用するロケールの場合、AM/PM インジケーター (ttt) には何も表示されません。

Dim testDateTime As Date = #1/27/2001 5:04:23 PM#
Dim testStr As String
' Returns current system time in the system-defined long time format.
testStr = Format(Now(), "Long Time")
' Returns current system date in the system-defined long date format.
testStr = Format(Now(), "Long Date")
' Also returns current system date in the system-defined long date 
' format, using the single letter code for the format.
testStr = Format(Now(), "D")

' Returns the value of testDateTime in user-defined date/time formats.
' Returns "5:4:23".
testStr = Format(testDateTime, "h:m:s")
' Returns "05:04:23 PM".
testStr = Format(testDateTime, "hh:mm:ss tt")
' Returns "Saturday, Jan 27 2001".
testStr = Format(testDateTime, "dddd, MMM d yyyy")
' Returns "17:04:23".
testStr = Format(testDateTime, "HH:mm:ss")
' Returns "23".
testStr = Format(23)

' User-defined numeric formats.
' Returns "5,459.40".
testStr = Format(5459.4, "##,##0.00")
' Returns "334.90".
testStr = Format(334.9, "###0.00")
' Returns "500.00%".
testStr = Format(5, "0.00%")

注釈

String.Format メソッドにも同様の機能があります。

ローカライズされていない数値文字列を書式設定する場合は、ユーザー定義の数値書式を使用して、目的の外観を確実に取得する必要があります。

Styleを指定せずに数値を書式設定しようとすると、Format 関数は Str 関数と同様の機能を提供しますが、これは国際的に認識されています。 ただし、Format 関数を使用して文字列として書式設定された正の数値には、値の符号用に予約された先頭のスペースは含まれません。Str 関数を使用して変換されたものは、先頭のスペースを保持します。

異なる数値の異なる形式

数値のユーザー定義書式式には、セミコロンで区切られた 1 ~ 3 つのセクションを含めることができます。 Format 関数の Style 引数に定義済みの数値書式のいずれかが含まれている場合は、1 つのセクションのみが許可されます。

使用する場合 これが結果です
1 つのセクションのみ 書式式はすべての値に適用されます。
2 つのセクション 最初のセクションは正の値とゼロに適用されます。2 番目の値は負の値に適用されます。
3 つのセクション 最初のセクションは正の値に適用され、2 番目は負の値に適用され、3 番目のセクションはゼロに適用されます。

次の例には、2 つのセクションがあります。最初のセクションでは、正の値と 0 の形式を定義します。2 番目のセクションでは、負の値の形式を定義します。 Format 関数の Style 引数は文字列を受け取るので、引用符で囲まれます。

Dim style1 As String = "$#,##0;($#,##0)"

セミコロンの間に何も含まれていない場合、不足しているセクションは正の値の形式を使用して出力されます。 たとえば、次の形式では、最初のセクションの書式を使用して正の値と負の値が表示され、値が 0 の場合は Zero 表示されます。

Dim style2 As String = "$#,##0;;\Z\e\r\o"

定義済みの数値書式

次の表は、定義済みの数値書式名を示しています。 これらは、Format 関数の Style 引数として名前で使用できます。

形式名 形容
General NumberG、または g 桁区切り記号のない数値を表示します。

たとえば、Format(&H3FA, "g")1018を返します。
CurrencyC、または c 必要に応じて、桁区切り記号で数値を表示します。では、小数点区切り記号の右側に 2 桁の数字が表示されます。 出力は、システム ロケールの設定に基づいています。

たとえば、Format(1234567, "c")$1,234,567.00を返します。
FixedF、または f 少なくとも 1 桁を左に表示し、小数点の右側に 2 桁を表示します。

たとえば、Format(1234567, "f")1234567.00を返します。
StandardN、または n 桁区切り記号付きの数値を表示します。少なくとも左に 1 桁、小数点の右側に 2 桁の数字を表示します。

たとえば、Format(1234567, "n")1,234,567.00を返します。
Percent 右にパーセント記号 (%) が追加された数値に 100 を乗算して表示します。では、小数点の右側に常に 2 桁の数字が表示されます。

たとえば、Format(0.4744, "Percent")47.44%を返します。
P、または p 桁区切り記号に 100 を掛けた数値を表示し、パーセント記号 (%) を右に追加し、1 つのスペースで区切ります。では、小数点の右側に常に 2 桁の数字が表示されます。

たとえば、Format(0.80345, "p")80.35 %を返します。
Scientific 標準の指数表記を使用し、2 桁の有効桁数を提供します。

たとえば、Format(1234567, "Scientific")1.23E+06を返します。
E、または e 標準の指数表記を使用し、6 桁の有効桁数を提供します。

たとえば、Format(1234567, "e")1.234567e+006を返します。
D、または d 数値を 10 進数 (底 10) 形式の数値を含む文字列として表示します。 このオプションは、整数型 (ByteShortIntegerLong) でのみサポートされます。

たとえば、Format(&H7F, "d")127を返します。
X、または x 数値の値を 16 進数 (底 16) 形式で含む文字列として表示します。 このオプションは、整数型 (ByteShortIntegerLong) でのみサポートされます。

たとえば、Format(127, "x")7fを返します。
Yes/No 数値が 0 の場合 No を表示します。それ以外の場合は、Yes表示されます。

たとえば、Format(0, "Yes/No")Noを返します。
True/False 数値が 0 の場合 False を表示します。それ以外の場合は、True表示されます。

たとえば、Format(1, "True/False")Trueを返します。
On/Off 数値が 0 の場合 Off を表示します。それ以外の場合は、On表示されます。

たとえば、Format(1, "On/Off")Onを返します。

スマート デバイス開発者向けノート

Yes/NoTrue/False、および On/Off 形式はサポートされていません。

数値形式の User-Defined

次の表は、ユーザー定義の数値書式の作成に使用できる文字を示しています。 これらは、Format 関数の Style 引数を作成するために使用できます。

文字 形容
何一つ 書式設定なしで数値を表示します。
(0) 数字のプレースホルダー。 数字または 0 を表示します。 式の書式指定文字列にゼロが表示される位置に数字がある場合は、それを表示します。それ以外の場合は、その位置に 0 が表示されます。

数値の桁数が、書式式の 0 (10 進数の両側) よりも少ない場合は、先頭または末尾にゼロが表示されます。 数値の小数点の右側の桁数が、書式指定式の小数点区切り記号の右側に 0 を超える場合は、数値を 0 と同数の小数点以下の桁数に丸めます。 数値の小数点区切り記号の左側の桁数が、書式式の小数点区切り記号の左側に 0 を超える場合は、追加の数字を変更せずに表示します。
(#) 数字のプレースホルダー。 数字または何も表示しません。 式の書式指定文字列に # 文字が表示される位置に数字がある場合は、それを表示します。それ以外の場合は、その位置に何も表示されません。

この記号は、0 桁プレースホルダーと同様に機能しますが、数値の桁数が書式式の小数点区切り記号の両側に # 文字より少ない場合、先頭と末尾のゼロは表示されません。
(.) 10 進プレースホルダー。 小数点のプレースホルダーは、小数点区切り記号の左右に表示される桁数を決定します。 書式指定式に、このシンボルの左側にある # 文字のみが含まれている場合。1 より小さい数値は小数点区切り記号で始まります。 小数部で表示される先頭の 0 を表示するには、小数点区切り記号の左側にある最初の桁のプレースホルダーとして 0 を使用します。 ロケールによっては、小数点区切り記号としてコンマが使用されます。 書式設定された出力で 10 進プレースホルダーとして使用される実際の文字は、システムによって認識される数値形式によって異なります。 したがって、コンマを 10 進プレースホルダーとして使用するロケールの場合でも、書式でピリオドを 10 進プレースホルダーとして使用する必要があります。 書式設定された文字列は、ロケールに適した形式で表示されます。
(%) パーセント プレースホルダー。 式に 100 を乗算します。 パーセント文字 (%) は、書式指定文字列に表示される位置に挿入されます。
(,) 桁区切り記号。 桁区切り記号は、小数点区切り記号の左側に 4 つ以上の桁がある数値内の数百から数千を区切ります。 桁区切り記号の標準使用は、桁のプレースホルダー (0 または #) で囲まれた桁区切り記号が書式に含まれている場合に指定されます。

小数点区切り記号のすぐ左にある桁区切り記号 (10 進数が指定されているかどうかに関係なく) または文字列の右端の文字は、"1,000 で除算し、必要に応じて丸める" を意味します。1,000 より小さいが 500 以上の数値は 1として表示され、500 より小さい数値は 0として表示されます。 この位置に隣接する 2 つの桁区切り記号は、100 万の係数でスケーリングされ、追加の区切り記号ごとに 1,000 の追加要素が表示されます。

小数点区切り記号の左または文字列の右端の位置以外の任意の位置にある複数の区切り記号は、単に桁区切り記号の使用を指定するものとして扱われます。 一部のロケールでは、ピリオドが桁区切り記号として使用されます。 書式設定された出力で桁区切り記号として使用される実際の文字は、システムによって認識される数値形式によって異なります。 したがって、ピリオドを桁区切り記号として使用するロケールの場合でも、書式で桁区切り記号としてコンマを使用する必要があります。 書式設定された文字列は、ロケールに適した形式で表示されます。

たとえば、次の 3 つの書式指定文字列について考えてみます。

- "#,0."。桁区切り記号を使用して、数値 1 億を文字列 "100,000,000" として書式設定します。
- "#0,."。1,000 の係数によるスケーリングを使用して、数値 1 億を文字列 "100000" として書式設定します。
- "#,0,."。桁区切り記号と 1000 単位のスケーリングを使用して、文字列 "100,000" として数値 1 億を書式設定します。
(:) 時刻区切り記号。 ロケールによっては、時刻区切り記号を表すために他の文字を使用できます。 時刻の値が書式設定されている場合、時刻区切り記号は時間、分、秒を区切ります。 書式設定された出力で時刻区切り記号として使用される実際の文字は、システム設定によって決まります。
(/) 日付の区切り記号。 ロケールによっては、日付区切り記号を表すために他の文字を使用できます。 日付の区切り記号は、日付の値が書式設定されている日、月、年を区切ります。 書式設定された出力で日付区切り記号として使用される実際の文字は、システム設定によって決まります。
(E-``E+``e-``e+) 科学的な形式。 書式指定式に、E-E+e-、または e+の左側に少なくとも 1 つの数字プレースホルダー (0 または #) が含まれている場合、数値は科学的な形式で表示され、数値と指数の間に E または e が挿入されます。 左側の数字プレースホルダーの数によって、指数部の桁数が決まります。 負の指数の横に負符号を配置するには、E- または e- を使用します。 負の指数の横にマイナス記号を、正の指数の横にプラス記号を配置するには、E+ または e+ を使用します。 また、正しい書式を取得するには、この記号の右側に数字のプレースホルダーを含める必要があります。
- + $ ( ) リテラル文字。 これらの文字は、書式指定文字列に入力されたとおりに表示されます。 一覧に含まれている文字以外の文字を表示するには、その前に円記号 (\) を付けるか、二重引用符 (" ") で囲みます。
(\) 書式指定文字列の次の文字を表示します。 特別な意味を持つ文字をリテラル文字として表示するには、その前に円記号 (\) を付けます。 円記号自体は表示されません。 円記号の使用は、次の文字を二重引用符で囲むのと同じです。 円記号を表示するには、2 つの円記号 (\\) を使用します。

リテラル文字として表示できない文字の例としては、日付の書式設定と時刻の書式設定 (acdhmnpq!など) があります。 、stwy/、および :)、数値書式文字 (#0%Ee、コンマ、 およびピリオド)、および文字列形式の文字 (@&<>、および !)。
("``ABC``") 二重引用符 (" ") 内に文字列を表示します。 コード内からスタイル引数に文字列を含めるには、Chr(34) を使用してテキストを囲む必要があります (34 は引用符 (") の文字コードです)。

従来のコード例

次の表に、数値の書式式の例をいくつか示します。 (これらの例はすべて、システムのロケール設定が英語と米国であることを前提としています)最初の列には、Format 関数の Style 引数の書式指定文字列が含まれています。書式設定されたデータが列見出しに指定された値を持つ場合、他の列には結果の出力が含まれます。

Format (Style) "5" は次のように書式設定されます "-5" "0.5"
Zero-length string ("") 5 -5 0.5
0 5 -5 1
0.00 5.00 -5.00 0.50
#,##0 5 -5 1
$#,##0;($#,##0) $5 ($5) $1
$#,##0.00;($#,##0.00) $5.00 ($5.00) $0.50
0% 500% -500% 50%
0.00% 500.00% -500.00% 50.00%
0.00E+00 5.00E+00 -5.00E+00 5.00E-01
0.00E-00 5.00E00 -5.00E00 5.00E-01

定義済みの日付/時刻形式

次の表は、定義済みの日付と時刻の形式名を示しています。 これらは、Format 関数のスタイル引数として名前で使用できます。

書式名 形容
General Date、または G 日付または時刻を表示します。 たとえば、3/12/2008 11:07:31 AMします。 日付の表示は、アプリケーションの現在のカルチャ値によって決まります。
Long DateMedium Date、または D 現在のカルチャの長い日付形式に従って日付を表示します。 たとえば、Wednesday, March 12, 2008します。
Short Date、または d 現在のカルチャの短い日付形式を使用して日付を表示します。 たとえば、3/12/2008します。

d 文字は、ユーザー定義の日付形式で日付を表示します。
Long TimeMedium Time、または T 現在のカルチャの長い時間形式を使用して時刻を表示します。通常、時間、分、秒が含まれます。 たとえば、11:07:31 AMします。
Short Time または t 現在のカルチャの短い時刻形式を使用して時刻を表示します。 たとえば、11:07 AMします。

t 文字は、ユーザー定義の時刻形式で 12 時間制を使用するロケールの AM 値または PM 値を表示します。
f 現在のカルチャの形式に従って、長い日付と短い時刻を表示します。 たとえば、Wednesday, March 12, 2008 11:07 AMします。
F 現在のカルチャの形式に従って、長い日付と長い時間を表示します。 たとえば、Wednesday, March 12, 2008 11:07:31 AMします。
g 現在のカルチャの形式に従って、短い日付と短い時刻を表示します。 たとえば、3/12/2008 11:07 AMします。
Mm 日付の月と日を表示します。 たとえば、March 12します。

M 文字は、ユーザー定義の日付形式で月を表示します。 m 文字は、ユーザー定義の時刻形式で分を表示します。
Rr RFC1123Pattern プロパティに従って日付を書式設定します。 たとえば、Wed, 12 Mar 2008 11:07:31 GMTします。 書式設定された日付では、日付と時刻の値は調整されません。 Format 関数を呼び出す前に、日付/時刻の値を GMT に調整する必要があります。
s 日付と時刻を並べ替え可能なインデックスとして書式設定します。 たとえば、2008-03-12T11:07:31します。

s 文字は、ユーザー定義の時刻形式で秒を表示します。
u 日付と時刻を GMT 並べ替え可能なインデックスとして書式設定します。 たとえば、2008-03-12 11:07:31Zします。
U 日付と時刻を、長い日付と長い時刻を GMT として書式設定します。 たとえば、Wednesday, March 12, 2008 6:07:31 PMします。
Yy 日付を年と月として書式設定します。 たとえば、March, 2008します。

Y 文字と y 文字は、ユーザー定義の日付形式で年を表示します。

アプリケーションの現在のカルチャ情報の詳細については、「Visual Basicのカルチャが文字列に与える影響 」を参照してください。

日付/時刻形式の User-Defined

次の表に、ユーザー定義の日付/時刻形式の作成に使用できる文字を示します。 以前のバージョンの Visual Basic とは異なり、これらの形式文字では大文字と小文字が区別されます。

文字 形容
(:) 時刻区切り記号。 ロケールによっては、時刻区切り記号を表すために他の文字を使用できます。 時刻の値が書式設定されている場合、時刻区切り記号は時間、分、秒を区切ります。 書式設定された出力で時刻区切り記号として使用される実際の文字は、アプリケーションの現在のカルチャ値によって決まります。
(/) 日付の区切り記号。 ロケールによっては、日付区切り記号を表すために他の文字を使用できます。 日付の区切り記号は、日付の値が書式設定されている日、月、年を区切ります。 書式設定された出力で日付の区切り記号として使用される実際の文字は、アプリケーションの現在のカルチャによって決まります。
(%) 後続の文字に関係なく、次の文字を 1 文字の形式で読み取る必要があることを示すために使用します。 また、単一文字形式がユーザー定義形式として読み取られたことを示すためにも使用されます。 詳細については、次の内容を参照してください。
d 先頭にゼロがない数値 (たとえば、1) として日を表示します。 ユーザー定義の数値形式でこれが唯一の文字である場合は、%d を使用します。
dd 先頭に 0 を付けた数値 (たとえば、01) として日を表示します。
ddd 日付を省略形 (たとえば、Sun) として表示します。
dddd 完全な名前 (たとえば、Sunday) として日を表示します。
M 月を先頭に 0 を付けずに数値として表示します (たとえば、1 月は 1として表されます)。 ユーザー定義の数値形式でこれが唯一の文字である場合は、%M を使用します。
MM 月を先頭に 0 の数値 (たとえば、01/12/01) として表示します。
MMM 月を省略形 (Janなど) として表示します。
MMMM 月を完全な月名 (たとえば、January) として表示します。
gg ピリオド/時代 (年号) の文字列 (たとえば、A.D.) を表示します。
h 12 時間制 (たとえば、1:15:15 PM) を使用して、先頭にゼロを付けずに時間を数値として表示します。 ユーザー定義の数値形式でこれが唯一の文字である場合は、%h を使用します。
hh 12 時間制 (たとえば、01:15:15 PM) を使用して、先頭にゼロを付けた数値として時間を表示します。
H 24 時間制 (たとえば、1:15:15) を使用して、先頭にゼロを付けずに時間を数値として表示します。 ユーザー定義の数値形式でこれが唯一の文字である場合は、%H を使用します。
HH 24 時間制 (たとえば、01:15:15) を使用して、先頭にゼロを付けた数値として時間を表示します。
m 分を先頭にゼロを付けずに数値で表示します (例: 12:1:15)。 ユーザー定義の数値形式でこれが唯一の文字である場合は、%m を使用します。
mm 先頭に 0 を付けた数値 (たとえば、12:01:15) として分を表示します。
s 2 番目の値を先頭にゼロを付けずに数値として表示します (たとえば、12:15:5)。 ユーザー定義の数値形式でこれが唯一の文字である場合は、%s を使用します。
ss 2 番目の値を先頭に 0 を付けた数値 (たとえば、12:15:05) として表示します。
f 秒の分数を表示します。 たとえば、ff は 100 分の 1 秒を表示し、ffff は 1 万秒を表示します。 ユーザー定義形式では、最大 7 つの f シンボルを使用できます。 ユーザー定義の数値形式でこれが唯一の文字である場合は、%f を使用します。
t 12 時間制を使用し、正午までに任意の時間の大文字の A を表示します。は、正午から午後 11 時 59 分までの任意の時間の大文字の P を表示します。ユーザー定義の数値形式でこれが唯一の文字である場合は、%t を使用します。
tt 12 時間制を使用するロケールでは、正午の前に任意の時間で大文字の AM が表示されます。は、正午から午後 11 時 59 分までの任意の時間の大文字の PM を表示します。

24 時間制を使用するロケールの場合、何も表示されません。
y 年番号 (0 から 9) を、先頭に 0 を付けずに表示します。 ユーザー定義の数値形式でこれが唯一の文字である場合は、%y を使用します。
yy 該当する場合は、先頭に 0 を付け、2 桁の数値形式で年を表示します。
yyy 年を 4 桁の数値形式で表示します。
yyyy 年を 4 桁の数値形式で表示します。
z 前にゼロを付けずにタイムゾーンオフセットを表示します (例: -8)。 ユーザー定義の数値形式でこれが唯一の文字である場合は、%z を使用します。
zz タイムゾーンのオフセットを先頭に 0 で表示します (例: -08)
zzz 完全なタイムゾーン オフセット (たとえば、-08:00) を表示します。

従来のコード例

December 7, 1958, 8:50 PM, 35 secondsのユーザー定義の日付と時刻の形式の例を次に示します。

形式 表示
M/d/yy 12/7/58
d-MMM 7-Dec
d-MMMM-yy 7-December-58
d MMMM 7 December
MMMM yy December 58
hh:mm tt 08:50 PM
h:mm:ss t 8:50:35 P
H:mm 20:50
H:mm:ss 20:50:35
M/d/yyyy H:mm 12/7/1958 20:50

スマート デバイス開発者向けノート

デバイスの最小時間解像度は、デバイスの製造元によって決まります。 デバイスの時間解決が十分に粗い場合、f 形式の文字は、そのデバイスで実行されるときに 0 を返します。

適用対象

こちらもご覧ください