String.Format Metode

Definisi

Mengonversi nilai objek menjadi string berdasarkan format yang ditentukan dan menyisipkannya ke string lain.

Jika Anda baru menggunakan metode ini String.Format , lihat Mulai menggunakan metode String.Format untuk gambaran umum singkat.

Overload

Nama Deskripsi
Format(IFormatProvider, String, Object, Object, Object)

Mengganti item format dalam string dengan representasi string dari tiga objek yang ditentukan. Parameter memasok informasi pemformatan khusus budaya.

Format(IFormatProvider, String, Object, Object)

Mengganti item format dalam string dengan representasi string dari dua objek yang ditentukan. Parameter memasok informasi pemformatan khusus budaya.

Format(String, Object, Object)

Mengganti item format dalam string dengan representasi string dari dua objek yang ditentukan.

Format(IFormatProvider, CompositeFormat, ReadOnlySpan<Object>)

Mengganti item format atau item dalam CompositeFormat dengan representasi string objek terkait dalam format yang ditentukan.

Format(IFormatProvider, CompositeFormat, Object[])

Mengganti item format atau item dalam CompositeFormat dengan representasi string objek terkait dalam format yang ditentukan.

Format(String, Object, Object, Object)

Mengganti item format dalam string dengan representasi string dari tiga objek yang ditentukan.

Format(IFormatProvider, String, Object[])

Mengganti item format dalam string dengan representasi string objek terkait dalam array tertentu. Parameter memasok informasi pemformatan khusus budaya.

Format(IFormatProvider, String, Object)

Mengganti item format atau item dalam string tertentu dengan representasi string objek yang sesuai. Parameter memasok informasi pemformatan khusus budaya.

Format(String, ReadOnlySpan<Object>)

Mengganti item format dalam string tertentu dengan representasi string objek terkait dalam rentang yang ditentukan.

Format(String, Object[])

Mengganti item format dalam string tertentu dengan representasi string objek terkait dalam array tertentu.

Format(String, Object)

Mengganti satu atau beberapa item format dalam string dengan representasi string dari objek tertentu.

Format(IFormatProvider, String, ReadOnlySpan<Object>)

Mengganti item format dalam string dengan representasi string objek terkait dalam rentang tertentu. Parameter memasok informasi pemformatan khusus budaya.

Format<TArg0,TArg1,TArg2>(IFormatProvider, CompositeFormat, TArg0, TArg1, TArg2)

Mengganti item format atau item dalam CompositeFormat dengan representasi string objek terkait dalam format yang ditentukan.

Format<TArg0,TArg1>(IFormatProvider, CompositeFormat, TArg0, TArg1)

Mengganti item format atau item dalam CompositeFormat dengan representasi string objek terkait dalam format yang ditentukan.

Format<TArg0>(IFormatProvider, CompositeFormat, TArg0)

Mengganti item format atau item dalam CompositeFormat dengan representasi string objek terkait dalam format yang ditentukan.

Contoh

Berbagai contoh yang memanggil metode Format diselingi di seluruh artikel ini. Anda juga dapat mengunduh sekumpulan String.Format contoh lengkap, yang disertakan proyek .NET Core untuk C#.

Berikut ini adalah beberapa contoh yang disertakan dalam artikel:

Membuat string format

Sisipkan string
Item format
Format item yang memiliki indeks yang sama

Mengontrol output yang diformat

Mengontrol pemformatan
Kontrol spasi
Perataan pengendalian
Mengontrol jumlah digit integral
Mengontrol jumlah digit setelah pemisah desimal
Sertakan kurung kurawal harfiah dalam string hasil

Menjadikan string format peka terhadap budaya setempat

Menjadikan format string peka terhadap budaya

Mengkustomisasi operasi pemformatan

Operasi pemformatan kustom
Penyedia intersepsi dan pemformat angka Romawi

Mulai menggunakan metode String.Format

Gunakan String.Format jika Anda perlu menyisipkan nilai objek, variabel, atau ekspresi ke dalam string lain. Misalnya, Anda dapat menyisipkan nilai Decimal nilai ke dalam string untuk menampilkannya kepada pengguna sebagai string tunggal:

Decimal pricePerOunce = 17.36m;
String s = String.Format("The current price is {0} per ounce.",
                         pricePerOunce);
Console.WriteLine(s);
// Result: The current price is 17.36 per ounce.
let pricePerOunce = 17.36m
String.Format("The current price is {0} per ounce.", pricePerOunce)
|> printfn "%s"
// Result: The current price is 17.36 per ounce.
Dim pricePerOunce As Decimal = 17.36D
Dim s As String = String.Format("The current price is {0} per ounce.",
                              pricePerOunce)
' Result: The current price is 17.36 per ounce.

Dan Anda dapat mengontrol pemformatan nilai tersebut:

Decimal pricePerOunce = 17.36m;
String s = String.Format("The current price is {0:C2} per ounce.",
                         pricePerOunce);
Console.WriteLine(s);
// Result if current culture is en-US:
//      The current price is $17.36 per ounce.
let pricePerOunce = 17.36m
String.Format("The current price is {0:C2} per ounce.", pricePerOunce)
|> printfn "%s"
// Result if current culture is en-US:
//      The current price is $17.36 per ounce.
Dim pricePerOunce As Decimal = 17.36D
Dim s As String = String.Format("The current price is {0:C2} per ounce.",
                              pricePerOunce)
' Result if current culture is en-US:
'      The current price is $17.36 per ounce.

Selain pemformatan, Anda juga dapat mengontrol perataan dan penspasian.

Menyisipkan string

String.Format dimulai dengan string format, diikuti oleh satu atau beberapa objek atau ekspresi yang akan dikonversi menjadi string dan disisipkan di tempat tertentu dalam string format. Contohnya:

decimal temp = 20.4m;
string s = String.Format("The temperature is {0}°C.", temp);
Console.WriteLine(s);
// Displays 'The temperature is 20.4°C.'
let temp = 20.4m
String.Format("The temperature is {0}°C.", temp)
|> printfn "%s"
// Displays 'The temperature is 20.4°C.'
Dim temp As Decimal = 20.4D
Dim s As String = String.Format("The temperature is {0}°C.", temp)
Console.WriteLine(s)
' Displays 'The temperature is 20.4°C.'

{0} dalam string format adalah item format. 0 adalah indeks objek yang nilai stringnya akan disisipkan pada posisi tersebut. (Indeks dimulai pada 0.) Jika objek yang akan disisipkan bukan string, metodenya ToString dipanggil untuk mengonversinya menjadi satu sebelum menyisipkannya dalam string hasil.

Berikut adalah contoh lain yang menggunakan dua item format dan dua objek dalam daftar objek:

string s = String.Format("At {0}, the temperature is {1}°C.",
                         DateTime.Now, 20.4);
Console.WriteLine(s);
// Output similar to: 'At 4/10/2015 9:29:41 AM, the temperature is 20.4°C.'
String.Format("At {0}, the temperature is {1}°C.", DateTime.Now, 20.4)
|> printfn "%s"
// Output similar to: 'At 4/10/2015 9:29:41 AM, the temperature is 20.4°C.'
Dim s As String = String.Format("At {0}, the temperature is {1}°C.",
                              Date.Now, 20.4)
' Output similar to: 'At 4/10/2015 9:29:41 AM, the temperature is 20.4°C.'

Anda dapat memiliki item format sebanyak mungkin dan objek sebanyak yang Anda inginkan, selama indeks setiap item format memiliki objek yang cocok dalam daftar objek. Anda juga tidak perlu khawatir tentang kelebihan beban yang Anda panggil; pengkompilasi akan memilih yang sesuai untuk Anda.

Mengontrol pemformatan

Anda dapat mengikuti indeks dalam item format dengan string format untuk mengontrol bagaimana objek diformat. Misalnya, {0:d} menerapkan string format "d" ke objek pertama dalam daftar objek. Berikut adalah contoh dengan satu objek dan dua item format:

string s = String.Format("It is now {0:d} at {0:t}", DateTime.Now);
Console.WriteLine(s);
// Output similar to: 'It is now 4/10/2015 at 10:04 AM'
String.Format("It is now {0:d} at {0:t}", DateTime.Now)
|> printfn "%s"
// Output similar to: 'It is now 4/10/2015 at 10:04 AM'
Dim s As String = String.Format("It is now {0:d} at {0:t}",
                              Date.Now)
' Output similar to: 'It is now 4/10/2015 at 10:04 AM'

Banyak jenis mendukung string format, termasuk semua jenis numerik (string format standar dan kustom), semua tanggal dan waktu (string format standar dan kustom), dan interval waktu (string format standar dan kustom), semua jenis enumerasi, dan string format GUID. Anda juga dapat menambahkan dukungan untuk string format ke tipe Anda sendiri.

Pengaturan spasi

Anda dapat menentukan lebar string yang disisipkan ke dalam string hasil dengan menggunakan sintaks seperti {0,12}, yang menyisipkan string 12 karakter. Dalam hal ini, representasi string dari objek pertama diratakan ke kanan dalam bidang yang terdiri dari 12 karakter. (Meskipun, jika representasi string objek pertama lebih dari 12 karakter, lebar bidang pilihan diabaikan, dan seluruh string dimasukkan ke dalam string hasil.)

Contoh berikut mendefinisikan bidang 6 karakter untuk menyimpan string "Tahun" dan beberapa string tahun, serta bidang 15 karakter untuk menahan string "Populasi" dan beberapa data populasi. Perhatikan bahwa karakter diratakan kanan di bidang .

int[] years = { 2013, 2014, 2015 };
int[] population = { 1025632, 1105967, 1148203 };
var sb = new System.Text.StringBuilder();
sb.Append(String.Format("{0,6} {1,15}\n\n", "Year", "Population"));
for (int index = 0; index < years.Length; index++)
    sb.Append(String.Format("{0,6} {1,15:N0}\n", years[index], population[index]));

Console.WriteLine(sb);

// Result:
//      Year      Population
//
//      2013       1,025,632
//      2014       1,105,967
//      2015       1,148,203
open System
open System.Text
 
let years = [| 2013; 2014; 2015 |]
let population = [| 1025632; 1105967; 1148203 |]
let sb = StringBuilder()
sb.Append(String.Format("{0,6} {1,15}\n\n", "Year", "Population")) |> ignore
for i = 0 to years.Length - 1 do
   sb.Append(String.Format("{0,6} {1,15:N0}\n", years[i], population[i])) |> ignore

printfn $"{sb}"

// Result:
//      Year      Population
//
//      2013       1,025,632
//      2014       1,105,967
//      2015       1,148,203
Dim years() As Integer = {2013, 2014, 2015}
Dim population() As Integer = {1025632, 1105967, 1148203}
Dim sb As New StringBuilder()
sb.Append(String.Format("{0,6} {1,15}{2}{2}",
                       "Year", "Population", vbCrLf))
For index As Integer = 0 To years.Length - 1
    sb.AppendFormat("{0,6} {1,15:N0}{2}",
                  years(index), population(index), vbCrLf)
Next
' Result:
'      Year      Population
'
'      2013       1,025,632
'      2014       1,105,967
'      2015       1,148,203

Penjajaran kontrol

Secara default, string diratakan kanan dalam bidangnya jika Anda menentukan lebar bidang. Untuk mengatur rata kiri string dalam sebuah bidang, Anda mengawali lebar bidang dengan tanda negatif, seperti {0,-12} untuk mendefinisikan bidang berukuran 12 karakter yang rata kiri.

Contoh berikut mirip dengan yang sebelumnya, kecuali semua label dan data diatur rata kiri.

int[] years = { 2013, 2014, 2015 };
int[] population = { 1025632, 1105967, 1148203 };
String s = String.Format("{0,-10} {1,-10}\n\n", "Year", "Population");
for (int index = 0; index < years.Length; index++)
    s += String.Format("{0,-10} {1,-10:N0}\n",
                       years[index], population[index]);
Console.WriteLine($"\n{s}");
// Result:
//    Year       Population
//
//    2013       1,025,632
//    2014       1,105,967
//    2015       1,148,203
let years = [| 2013; 2014; 2015 |]
let population = [| 1025632; 1105967; 1148203 |]
let mutable s = String.Format("{0,-10} {1,-10}\n\n", "Year", "Population")
for i = 0 to years.Length - 1 do
    s <- s + String.Format("{0,-10} {1,-10:N0}\n", years[i], population[i])
printfn $"\n{s}"
// Result:
//    Year       Population
//
//    2013       1,025,632
//    2014       1,105,967
//    2015       1,148,203
Dim years() As Integer = {2013, 2014, 2015}
Dim population() As Integer = {1025632, 1105967, 1148203}
Dim s As String = String.Format("{0,-10} {1,-10}{2}{2}",
                               "Year", "Population", vbCrLf)
For index As Integer = 0 To years.Length - 1
    s += String.Format("{0,-10} {1,-10:N0}{2}",
                     years(index), population(index), vbCrLf)
Next
' Result:
'    Year       Population
'
'    2013       1,025,632
'    2014       1,105,967
'    2015       1,148,203

String.Format memanfaatkan fitur pemformatan komposit. Untuk informasi selengkapnya, lihat Pemformatan Komposit .

Saya panggil metode yang mana?

Objective Metode untuk memanggil
Format satu atau beberapa objek dengan menggunakan konvensi budaya saat ini. Kecuali untuk overload yang menyertakan parameter provider, overload Format yang tersisa menyertakan parameter String diikuti oleh satu atau beberapa parameter objek. Karena itu, Anda tidak perlu menentukan kelebihan beban mana yang Format ingin Anda panggil. Pengkompilasi bahasa Anda memilih kelebihan beban yang sesuai dari antara kelebihan beban yang tidak memiliki provider parameter, berdasarkan daftar argumen Anda. Misalnya, jika daftar argumen Anda memiliki lima argumen, pengkompilasi memanggil Format(String, Object[]) metode .
Format satu atau beberapa objek dengan menggunakan konvensi budaya tertentu. Setiap Format kelebihan beban yang dimulai dengan provider parameter diikuti oleh String parameter dan satu atau beberapa parameter objek. Karena itu, Anda tidak perlu menentukan kelebihan beban spesifik Format mana yang ingin Anda panggil. Pengkompilasi bahasa Anda memilih kelebihan beban yang sesuai dari antara kelebihan beban yang memiliki provider parameter, berdasarkan daftar argumen Anda. Misalnya, jika daftar argumen Anda memiliki lima argumen, pengkompilasi memanggil Format(IFormatProvider, String, Object[]) metode .
Lakukan operasi pemformatan kustom baik dengan ICustomFormatter implementasi atau IFormattable implementasi. Salah satu dari empat kelebihan beban dengan provider parameter. Pengkompilasi memilih kelebihan beban yang sesuai dari antara kelebihan beban yang memiliki provider parameter, berdasarkan daftar argumen Anda.

Metode Format secara singkat

Setiap kelebihan beban Format metode menggunakan fitur pemformatan komposit untuk menyertakan tempat penampung terindeks berbasis nol, yang disebut item format, dalam string format komposit. Pada runtime, setiap item format diganti dengan representasi string dari argumen yang sesuai dalam daftar parameter. Jika nilai argumen adalah null, item format diganti dengan String.Empty. Misalnya, panggilan berikut ke Format(String, Object, Object, Object) metode menyertakan string format dengan tiga item format, {0}, , {1}dan {2}, dan daftar argumen dengan tiga item.

DateTime dat = new DateTime(2012, 1, 17, 9, 30, 0);
string city = "Chicago";
int temp = -16;
string output = String.Format("At {0} in {1}, the temperature was {2} degrees.",
                              dat, city, temp);
Console.WriteLine(output);
// The example displays output like the following:
//    At 1/17/2012 9:30:00 AM in Chicago, the temperature was -16 degrees.
open System

let dat = DateTime(2012, 1, 17, 9, 30, 0) 
let city = "Chicago"
let temp = -16
String.Format("At {0} in {1}, the temperature was {2} degrees.", dat, city, temp)
|> printfn "%s"
// The example displays output like the following:
//    At 1/17/2012 9:30:00 AM in Chicago, the temperature was -16 degrees.
Dim dat As Date = #1/17/2012 9:30AM#
Dim city As String = "Chicago"
Dim temp As Integer = -16
Dim output As String = String.Format("At {0} in {1}, the temperature was {2} degrees.",
                                   dat, city, temp)
Console.WriteLine(output)
' The example displays the following output:
'    At 1/17/2012 9:30:00 AM in Chicago, the temperature was -16 degrees.

Item format

Item format memiliki sintaks ini:

{index[,width][:formatString]}

Tanda kurung menunjukkan elemen opsional. Kurung kurawal pembuka dan penutup diperlukan. (Untuk menyertakan kurung kurawal pembuka atau penutup harfiah dalam string format, lihat bagian Kurung Kurawal Pelepasan di artikel Pemformatan Komposit .)

Misalnya, item format untuk memformat nilai mata uang mungkin muncul seperti ini:

var value = String.Format("{0,-10:C}", 126347.89m);
Console.WriteLine(value);
open System

String.Format("{0,-10:C}", 126347.89m)         
|> printfn "%s"
String.Format("{0,-10:C}", 126347.89D)

Item format memiliki elemen berikut:

index
Indeks berbasis nol dari argumen yang representasi stringnya akan disertakan pada posisi ini dalam string. Jika argumen ini adalah null, string kosong akan disertakan pada posisi ini dalam string.

width
Optional. Bilangan bulat bertanda tangan yang menunjukkan panjang total bidang tempat argumen disisipkan dan apakah rata kanan (bilangan bulat positif) atau rata kiri (bilangan bulat negatif). Jika Anda menghilangkan width, representasi string dari argumen terkait disisipkan dalam bidang tanpa spasi di awal atau akhir.

Jika nilai kurang dari width panjang argumen yang akan disisipkan, width diabaikan dan panjang representasi string argumen digunakan sebagai lebar bidang.

formatString
Optional. String yang menentukan format string hasil argumen yang sesuai. Jika Anda menghilangkan formatString, metode tanpa parameter ToString dari argumen yang sesuai diaktifkan untuk menghasilkan bentuk string-nya. Jika Anda menentukan formatString, argumen yang dirujuk oleh item format harus mengimplementasikan IFormattable antarmuka. Jenis yang mendukung string format meliputi:

Namun, jenis kustom apa pun dapat menerapkan IFormattable atau memperluas implementasi jenis IFormattable yang ada.

Contoh berikut menggunakan argumen width dan formatString untuk menghasilkan output yang diformat.

// Create array of 5-tuples with population data for three U.S. cities, 1940-1950.
Tuple<string, DateTime, int, DateTime, int>[] cities =
    { Tuple.Create("Los Angeles", new DateTime(1940, 1, 1), 1504277,
                   new DateTime(1950, 1, 1), 1970358),
      Tuple.Create("New York", new DateTime(1940, 1, 1), 7454995,
                   new DateTime(1950, 1, 1), 7891957),
      Tuple.Create("Chicago", new DateTime(1940, 1, 1), 3396808,
                   new DateTime(1950, 1, 1), 3620962),
      Tuple.Create("Detroit", new DateTime(1940, 1, 1), 1623452,
                   new DateTime(1950, 1, 1), 1849568) };

// Display header
var header = String.Format("{0,-12}{1,8}{2,12}{1,8}{2,12}{3,14}\n",
                              "City", "Year", "Population", "Change (%)");
Console.WriteLine(header);
foreach (var city in cities) {
   var output = String.Format("{0,-12}{1,8:yyyy}{2,12:N0}{3,8:yyyy}{4,12:N0}{5,14:P1}",
                          city.Item1, city.Item2, city.Item3, city.Item4, city.Item5,
                          (city.Item5 - city.Item3)/ (double)city.Item3);
   Console.WriteLine(output);
}
// The example displays the following output:
//    City            Year  Population    Year  Population    Change (%)
//
//    Los Angeles     1940   1,504,277    1950   1,970,358        31.0 %
//    New York        1940   7,454,995    1950   7,891,957         5.9 %
//    Chicago         1940   3,396,808    1950   3,620,962         6.6 %
//    Detroit         1940   1,623,452    1950   1,849,568        13.9 %
// Create a list of 5-tuples with population data for three U.S. cities, 1940-1950.
let cities = 
    [ "Los Angeles", DateTime(1940, 1, 1), 1504277, DateTime(1950, 1, 1), 1970358
      "New York", DateTime(1940, 1, 1), 7454995, DateTime(1950, 1, 1), 7891957
      "Chicago", DateTime(1940, 1, 1), 3396808, DateTime(1950, 1, 1), 3620962
      "Detroit", DateTime(1940, 1, 1), 1623452, DateTime(1950, 1, 1), 1849568 ]

// Display header
String.Format("{0,-12}{1,8}{2,12}{1,8}{2,12}{3,14}\n", "City", "Year", "Population", "Change (%)")
|> printfn "%s"

for name, year1, pop1, year2, pop2 in cities do
    String.Format("{0,-12}{1,8:yyyy}{2,12:N0}{3,8:yyyy}{4,12:N0}{5,14:P1}",
                  name, year1, pop1, year2, pop2,
                  double (pop2 - pop1) / double pop1)
    |> printfn "%s"
// The example displays the following output:
//    City            Year  Population    Year  Population    Change (%)
//  
//    Los Angeles     1940   1,504,277    1950   1,970,358        31.0 %
//    New York        1940   7,454,995    1950   7,891,957         5.9 %
//    Chicago         1940   3,396,808    1950   3,620,962         6.6 %
//    Detroit         1940   1,623,452    1950   1,849,568        13.9 %
Module Example4
    Public Sub Main()
        ' Create array of 5-tuples with population data for three U.S. cities, 1940-1950.
        Dim cities() =
          {Tuple.Create("Los Angeles", #1/1/1940#, 1504277, #1/1/1950#, 1970358),
            Tuple.Create("New York", #1/1/1940#, 7454995, #1/1/1950#, 7891957),
            Tuple.Create("Chicago", #1/1/1940#, 3396808, #1/1/1950#, 3620962),
            Tuple.Create("Detroit", #1/1/1940#, 1623452, #1/1/1950#, 1849568)}

        ' Display header
        Dim header As String = String.Format("{0,-12}{1,8}{2,12}{1,8}{2,12}{3,14}",
                                           "City", "Year", "Population", "Change (%)")
        Console.WriteLine(header)
        Console.WriteLine()
        For Each city In cities
            Dim output = String.Format("{0,-12}{1,8:yyyy}{2,12:N0}{3,8:yyyy}{4,12:N0}{5,14:P1}",
                                city.Item1, city.Item2, city.Item3, city.Item4, city.Item5,
                                (city.Item5 - city.Item3) / city.Item3)
            Console.WriteLine(output)
        Next
    End Sub
End Module
' The example displays the following output:
'    City            Year  Population    Year  Population    Change (%)
'
'    Los Angeles     1940   1,504,277    1950   1,970,358        31.0 %
'    New York        1940   7,454,995    1950   7,891,957         5.9 %
'    Chicago         1940   3,396,808    1950   3,620,962         6.6 %
'    Detroit         1940   1,623,452    1950   1,849,568        13.9 %

Bagaimana argumen diformat

Item format diproses secara berurutan dari awal string. Setiap item format memiliki indeks yang sesuai dengan objek dalam daftar argumen metode. Metode ini Format mengambil argumen dan memperoleh representasi stringnya sebagai berikut:

Untuk contoh yang mencegat panggilan ke ICustomFormatter.Format metode dan memungkinkan Anda melihat informasi apa yang diperlihatkan oleh metode Format kepada metode pemformatan untuk setiap item format dalam string format komposit, lihat di Contoh: Penyedia intersepsi dan pemformat angka Romawi.

Untuk informasi selengkapnya, lihat Memproses pesanan.

Format item yang memiliki indeks yang sama

Metode Format ini melemparkan FormatException pengecualian jika indeks item indeks lebih besar dari atau sama dengan jumlah argumen dalam daftar argumen. Namun, format dapat menyertakan lebih banyak item format daripada argumen, selama beberapa item format memiliki indeks yang sama. Dalam panggilan ke Format(String, Object) metode dalam contoh berikut, daftar argumen memiliki satu argumen, tetapi string format menyertakan dua item format: satu menampilkan nilai desimal angka, dan yang lain menampilkan nilai heksadesimalnya.

short[] values= { Int16.MinValue, -27, 0, 1042, Int16.MaxValue };
Console.WriteLine("{0,10}  {1,10}\n", "Decimal", "Hex");
foreach (short value in values)
{
   string formatString = String.Format("{0,10:G}: {0,10:X}", value);
   Console.WriteLine(formatString);
}
// The example displays the following output:
//       Decimal         Hex
//
//        -32768:       8000
//           -27:       FFE5
//             0:          0
//          1042:        412
//         32767:       7FFF
open System

let values= [| Int16.MinValue; -27s; 0s; 1042s; Int16.MaxValue |]
printfn "%10s  %10s\n" "Decimal" "Hex"
for value in values do
    String.Format("{0,10:G}: {0,10:X}", value)
    |> printfn "%s"
// The example displays the following output:
//       Decimal         Hex
//    
//        -32768:       8000
//           -27:       FFE5
//             0:          0
//          1042:        412
//         32767:       7FFF
Module Example1
    Public Sub Main()
        Dim values() As Short = {Int16.MinValue, -27, 0, 1042, Int16.MaxValue}
        Console.WriteLine("{0,10}  {1,10}", "Decimal", "Hex")
        Console.WriteLine()
        For Each value As Short In values
            Dim formatString As String = String.Format("{0,10:G}: {0,10:X}", value)
            Console.WriteLine(formatString)
        Next
    End Sub
End Module
' The example displays the following output:
'       Decimal         Hex
'    
'        -32768:       8000
'           -27:       FFE5
'             0:          0
'          1042:        412
'         32767:       7FFF

Format dan budaya

Umumnya, objek dalam daftar argumen dikonversi ke dalam representasi stringnya dengan menggunakan konvensi budaya yang ada saat ini, yang dikembalikan oleh properti CultureInfo.CurrentCulture. Anda dapat mengontrol perilaku ini dengan memanggil salah satu varian dari Format yang menyertakan parameter provider. Parameter provider adalah IFormatProvider implementasi yang memasok informasi pemformatan kustom dan khusus budaya yang digunakan untuk memoderasi proses pemformatan.

Antarmuka IFormatProvider memiliki satu anggota, GetFormat, yang bertanggung jawab untuk mengembalikan objek yang menyediakan informasi pemformatan. .NET memiliki tiga IFormatProvider implementasi yang menyediakan pemformatan khusus budaya:

Operasi pemformatan kustom

Anda juga dapat memanggil salah satu overload dari metode Format yang memiliki parameter provider dengan tipe IFormatProvider untuk melakukan operasi pemformatan kustom. Misalnya, Anda dapat memformat bilangan bulat sebagai nomor identifikasi atau sebagai nomor telepon. Untuk melakukan pemformatan kustom, argumen Anda provider harus mengimplementasikan antarmuka IFormatProvider dan ICustomFormatter. Ketika implementasi Format diteruskan sebagai argumen ICustomFormatter ke dalam metode provider, metode Format memanggil implementasinya IFormatProvider.GetFormat dan meminta objek dengan jenis ICustomFormatter. Kemudian, ia memanggil metode dari objek ICustomFormatter yang dikembalikan untuk memformat setiap item format dalam string komposit yang diteruskan kepadanya.

Untuk informasi selengkapnya tentang menyediakan solusi pemformatan kustom, lihat Cara: Menentukan dan Menggunakan Penyedia Format Numerik Kustom dan ICustomFormatter. Untuk contoh yang mengonversi bilangan bulat menjadi angka kustom yang diformat, lihat Contoh: Operasi pemformatan kustom. Untuk contoh yang mengonversi byte tak bertanda tangan menjadi angka Romawi, lihat Contoh: Penyedia intersepsi dan pemformat angka Romawi.

Contoh: Operasi pemformatan kustom

Contoh ini mendefinisikan penyedia format yang memformat nilai bilangan bulat sebagai nomor akun pelanggan dalam formulir x-xxxxx-xx.

using System;

public class TestFormatter
{
   public static void Main()
   {
      int acctNumber = 79203159;
      Console.WriteLine(String.Format(new CustomerFormatter(), "{0}", acctNumber));
      Console.WriteLine(String.Format(new CustomerFormatter(), "{0:G}", acctNumber));
      Console.WriteLine(String.Format(new CustomerFormatter(), "{0:S}", acctNumber));
      Console.WriteLine(String.Format(new CustomerFormatter(), "{0:P}", acctNumber));
      try {
         Console.WriteLine(String.Format(new CustomerFormatter(), "{0:X}", acctNumber));
      }
      catch (FormatException e) {
         Console.WriteLine(e.Message);
      }
   }
}

public class CustomerFormatter : 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 (! this.Equals(formatProvider))
      {
         return null;
      }
      else
      {
         if (String.IsNullOrEmpty(format)) 
            format = "G";
         
         string customerString = arg.ToString();
         if (customerString.Length < 8)
            customerString = customerString.PadLeft(8, '0');
         
         format = format.ToUpper();
         switch (format)
         {
            case "G":
               return customerString.Substring(0, 1) + "-" +
                                     customerString.Substring(1, 5) + "-" +
                                     customerString.Substring(6);
            case "S":                          
               return customerString.Substring(0, 1) + "/" +
                                     customerString.Substring(1, 5) + "/" +
                                     customerString.Substring(6);
            case "P":                          
               return customerString.Substring(0, 1) + "." +
                                     customerString.Substring(1, 5) + "." +
                                     customerString.Substring(6);
            default:
               throw new FormatException( 
                         String.Format("The '{0}' format specifier is not supported.", format));
         }
      }   
   }
}
// The example displays the following output:
//       7-92031-59
//       7-92031-59
//       7/92031/59
//       7.92031.59
//       The 'X' format specifier is not supported.
open System

type CustomerFormatter() = 
    interface IFormatProvider with
        member this.GetFormat(formatType) =
            if formatType = typeof<ICustomFormatter> then
                this
            else
                null

    interface ICustomFormatter with
        member this.Format(format, arg, formatProvider: IFormatProvider) = 
            if this.Equals formatProvider |> not then
                null
            else
                let format = 
                    if String.IsNullOrEmpty format then "G"
                    else format.ToUpper()
                
                let customerString = 
                    let s = string arg
                    if s.Length < 8 then
                        s.PadLeft(8, '0')
                    else s
                
                match format with
                | "G" ->
                    customerString.Substring(0, 1) + "-" +
                        customerString.Substring(1, 5) + "-" +
                        customerString.Substring 6
                | "S" ->                          
                    customerString.Substring(0, 1) + "/" +
                        customerString.Substring(1, 5) + "/" +
                        customerString.Substring 6
                | "P" ->                          
                    customerString.Substring(0, 1) + "." +
                        customerString.Substring(1, 5) + "." +
                        customerString.Substring 6
                | _ ->
                    raise (FormatException $"The '{format}' format specifier is not supported.")

let acctNumber = 79203159
String.Format(CustomerFormatter(), "{0}", acctNumber)
|> printfn "%s"
String.Format(CustomerFormatter(), "{0:G}", acctNumber)
|> printfn "%s"
String.Format(CustomerFormatter(), "{0:S}", acctNumber)
|> printfn "%s"
String.Format(CustomerFormatter(), "{0:P}", acctNumber)
|> printfn "%s"
try
    String.Format(CustomerFormatter(), "{0:X}", acctNumber)
    |> printfn "%s"
with :? FormatException as e ->
    printfn $"{e.Message}"

// The example displays the following output:
//       7-92031-59
//       7-92031-59
//       7/92031/59
//       7.92031.59
//       The 'X' format specifier is not supported.
Module TestFormatter
   Public Sub Main()
      Dim acctNumber As Integer = 79203159
      Console.WriteLine(String.Format(New CustomerFormatter, "{0}", acctNumber))
      Console.WriteLine(String.Format(New CustomerFormatter, "{0:G}", acctNumber))
      Console.WriteLine(String.Format(New CustomerFormatter, "{0:S}", acctNumber))
      Console.WriteLine(String.Format(New CustomerFormatter, "{0:P}", acctNumber))
      Try
         Console.WriteLine(String.Format(New CustomerFormatter, "{0:X}", acctNumber))
      Catch e As FormatException
         Console.WriteLine(e.Message)
      End Try   
   End Sub
End Module

Public Class CustomerFormatter : Implements IFormatProvider, ICustomFormatter
   Public Function GetFormat(type As Type) As Object  _
                   Implements IFormatProvider.GetFormat
      If type 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 Me.Equals(formatProvider) Then
         Return Nothing
      Else
         If String.IsNullOrEmpty(fmt) Then fmt = "G"
         
         Dim customerString As String = arg.ToString()
         if customerString.Length < 8 Then _
            customerString = customerString.PadLeft(8, "0"c)
         
         Select Case fmt
            Case "G"
               Return customerString.Substring(0, 1) & "-" & _
                                     customerString.Substring(1, 5) & "-" & _
                                     customerString.Substring(6)
            Case "S"                         
               Return customerString.Substring(0, 1) & "/" & _
                                     customerString.Substring(1, 5) & "/" & _
                                     customerString.Substring(6)
            Case "P"
               Return customerString.Substring(0, 1) & "." & _
                                     customerString.Substring(1, 5) & "." & _
                                     customerString.Substring(6)
            Case Else
               Throw New FormatException( _
                         String.Format("The '{0}' format specifier is not supported.", fmt))
         End Select                                                     
      End If   
   End Function
End Class
' The example displays the following output:
'       7-92031-59
'       7-92031-59
'       7/92031/59
'       7.92031.59
'       The 'X' format specifier is not supported.

Contoh: Penyedia layanan intersepsi dan pemformat bilangan Romawi

Contoh ini mendefinisikan penyedia format kustom yang mengimplementasikan ICustomFormatter antarmuka dan IFormatProvider untuk melakukan dua hal:

  • Ini menampilkan parameter yang diteruskan ke implementasinya ICustomFormatter.Format . Ini memungkinkan kita untuk melihat parameter apa yang diteruskan Format(IFormatProvider, String, Object[]) metode ke implementasi pemformatan kustom untuk setiap objek yang coba diformat. Ini dapat berguna saat Anda men-debug aplikasi Anda.
  • Jika objek yang akan diformat adalah nilai byte yang tidak ditandatangani yang akan diformat dengan menggunakan string format standar "R", formatter kustom memformat nilai numerik sebagai angka Romawi.
using System;
using System.Globalization;

public class InterceptProvider : IFormatProvider, ICustomFormatter
{
   public object GetFormat(Type formatType)
   {
      if (formatType == typeof(ICustomFormatter))
         return this;
      else
         return null;
   }

   public string Format(String format, Object obj, IFormatProvider provider)
   {
      // Display information about method call.
      string formatString = format ?? "<null>";
      Console.WriteLine("Provider: {0}, Object: {1}, Format String: {2}",
                        provider.GetType().Name, obj ?? "<null>", formatString);

      if (obj == null) return String.Empty;

      // If this is a byte and the "R" format string, format it with Roman numerals.
      if (obj is Byte && formatString.ToUpper().Equals("R")) {
         Byte value = (Byte) obj;
         int remainder;
         int result;
         String returnString = String.Empty;

         // Get the hundreds digit(s)
         result = Math.DivRem(value, 100, out remainder);
         if (result > 0)
            returnString = new String('C', result);
         value = (Byte) remainder;
         // Get the 50s digit
         result = Math.DivRem(value, 50, out remainder);
         if (result == 1)
            returnString += "L";
         value = (Byte) remainder;
         // Get the tens digit.
         result = Math.DivRem(value, 10, out remainder);
         if (result > 0)
            returnString += new String('X', result);
         value = (Byte) remainder;
         // Get the fives digit.
         result = Math.DivRem(value, 5, out remainder);
         if (result > 0)
            returnString += "V";
         value = (Byte) remainder;
         // Add the ones digit.
         if (remainder > 0)
            returnString += new String('I', remainder);

         // Check whether we have too many X characters.
         int pos = returnString.IndexOf("XXXX");
         if (pos >= 0) {
            int xPos = returnString.IndexOf("L");
            if (xPos >= 0 & xPos == pos - 1)
               returnString = returnString.Replace("LXXXX", "XC");
            else
               returnString = returnString.Replace("XXXX", "XL");
         }
         // Check whether we have too many I characters
         pos = returnString.IndexOf("IIII");
         if (pos >= 0)
            if (returnString.IndexOf("V") >= 0)
               returnString = returnString.Replace("VIIII", "IX");
            else
               returnString = returnString.Replace("IIII", "IV");

         return returnString;
      }

      // Use default for all other formatting.
      if (obj is IFormattable)
         return ((IFormattable) obj).ToString(format, CultureInfo.CurrentCulture);
      else
         return obj.ToString();
   }
}

public class FormatExample12
{
   public static void Main()
   {
      int n = 10;
      double value = 16.935;
      DateTime day = DateTime.Now;
      InterceptProvider provider = new InterceptProvider();
      Console.WriteLine(String.Format(provider, "{0:N0}: {1:C2} on {2:d}\n", n, value, day));
      Console.WriteLine(String.Format(provider, "{0}: {1:F}\n", "Today: ",
                                      (DayOfWeek) DateTime.Now.DayOfWeek));
      Console.WriteLine(String.Format(provider, "{0:X}, {1}, {2}\n",
                                      (Byte) 2, (Byte) 12, (Byte) 199));
      Console.WriteLine(String.Format(provider, "{0:R}, {1:R}, {2:R}\n",
                                      (Byte) 2, (Byte) 12, (Byte) 199));
   }
}
// The example displays the following output:
//    Provider: InterceptProvider, Object: 10, Format String: N0
//    Provider: InterceptProvider, Object: 16.935, Format String: C2
//    Provider: InterceptProvider, Object: 1/31/2013 6:10:28 PM, Format String: d
//    10: $16.94 on 1/31/2013
//
//    Provider: InterceptProvider, Object: Today: , Format String: <null>
//    Provider: InterceptProvider, Object: Thursday, Format String: F
//    Today: : Thursday
//
//    Provider: InterceptProvider, Object: 2, Format String: X
//    Provider: InterceptProvider, Object: 12, Format String: <null>
//    Provider: InterceptProvider, Object: 199, Format String: <null>
//    2, 12, 199
//
//    Provider: InterceptProvider, Object: 2, Format String: R
//    Provider: InterceptProvider, Object: 12, Format String: R
//    Provider: InterceptProvider, Object: 199, Format String: R
//    II, XII, CXCIX
open System
open System.Globalization

type InterceptProvider() =
    interface IFormatProvider with
        member this.GetFormat(formatType) =
            if formatType = typeof<ICustomFormatter> then
                this
            else
                null
    interface ICustomFormatter with
        member _.Format(format, obj, provider: IFormatProvider) = 
            // Display information about method call.
            let formatString =
                if format = null then "<null>" else format
            printfn $"Provider: {provider.GetType().Name}, Object: %A{obj}, Format String: %s{formatString}"
                                
            if obj = null then
                String.Empty
            else
                // If this is a byte and the "R" format string, format it with Roman numerals.
                match obj with
                | :? byte as value when formatString.ToUpper().Equals "R" -> 
                    let mutable returnString = String.Empty

                    // Get the hundreds digit(s)
                    let struct (result, remainder) = Math.DivRem(value, 100uy)
                    if result > 0uy then
                        returnString <- String('C', int result)
                    let value = byte remainder
                    // Get the 50s digit
                    let struct (result, remainder) = Math.DivRem(value, 50uy)
                    if result = 1uy then
                        returnString <- returnString + "L"
                    let value = byte remainder
                    // Get the tens digit.
                    let struct (result, remainder) = Math.DivRem(value, 10uy)
                    if result > 0uy then
                        returnString <- returnString + String('X', int result)
                    let value = byte remainder 
                    // Get the fives digit.
                    let struct (result, remainder) = Math.DivRem(value, 5uy)
                    if result > 0uy then
                        returnString <- returnString + "V"
                    let value = byte remainder
                    // Add the ones digit.
                    if remainder > 0uy then 
                        returnString <- returnString + String('I', int remainder)
                    
                    // Check whether we have too many X characters.
                    let pos = returnString.IndexOf "XXXX"
                    if pos >= 0 then
                        let xPos = returnString.IndexOf "L" 
                        returnString <-
                            if xPos >= 0 && xPos = pos - 1 then
                                returnString.Replace("LXXXX", "XC")
                            else
                                returnString.Replace("XXXX", "XL")   
                    // Check whether we have too many I characters
                    let pos = returnString.IndexOf "IIII"
                    if pos >= 0 then
                        returnString <-
                            if returnString.IndexOf "V" >= 0 then
                                returnString.Replace("VIIII", "IX")
                            else
                                returnString.Replace("IIII", "IV")    
                    returnString 

                // Use default for all other formatting.
                | :? IFormattable as x ->
                    x.ToString(format, CultureInfo.CurrentCulture)
                | _ ->
                    string obj

let n = 10
let value = 16.935
let day = DateTime.Now
let provider = InterceptProvider()
String.Format(provider, "{0:N0}: {1:C2} on {2:d}\n", n, value, day)
|> printfn "%s"
String.Format(provider, "{0}: {1:F}\n", "Today: ", DateTime.Now.DayOfWeek)
|> printfn "%s"
String.Format(provider, "{0:X}, {1}, {2}\n", 2uy, 12uy, 199uy)
|> printfn "%s"
String.Format(provider, "{0:R}, {1:R}, {2:R}\n", 2uy, 12uy, 199uy)
|> printfn "%s"
// The example displays the following output:
//    Provider: InterceptProvider, Object: 10, Format String: N0
//    Provider: InterceptProvider, Object: 16.935, Format String: C2
//    Provider: InterceptProvider, Object: 1/31/2013 6:10:28 PM, Format String: d
//    10: $16.94 on 1/31/2013
//    
//    Provider: InterceptProvider, Object: Today: , Format String: <null>
//    Provider: InterceptProvider, Object: Thursday, Format String: F
//    Today: : Thursday
//    
//    Provider: InterceptProvider, Object: 2, Format String: X
//    Provider: InterceptProvider, Object: 12, Format String: <null>
//    Provider: InterceptProvider, Object: 199, Format String: <null>
//    2, 12, 199
//    
//    Provider: InterceptProvider, Object: 2, Format String: R
//    Provider: InterceptProvider, Object: 12, Format String: R
//    Provider: InterceptProvider, Object: 199, Format String: R
//    II, XII, CXCIX
Imports System.Globalization

Public Class InterceptProvider : 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, obj As Object, provider As IFormatProvider) As String _
         Implements ICustomFormatter.Format

      Dim formatString As String = If(fmt IsNot Nothing, fmt, "<null>")
      Console.WriteLine("Provider: {0}, Object: {1}, Format String: {2}",
                        provider, If(obj IsNot Nothing, obj, "<null>"), formatString)

      If obj Is Nothing Then Return String.Empty

      ' If this is a byte and the "R" format string, format it with Roman numerals.
      If TypeOf(obj) Is Byte AndAlso formatString.ToUpper.Equals("R") Then
         Dim value As Byte = CByte(obj)
         Dim remainder As Integer
         Dim result As Integer
         Dim returnString As String = String.Empty

         ' Get the hundreds digit(s)
         result = Math.DivRem(value, 100, remainder)
         If result > 0 Then returnString = New String("C"c, result)
         value = CByte(remainder)
         ' Get the 50s digit
         result = Math.DivRem(value, 50, remainder)
         If result = 1 Then returnString += "L"
         value = CByte(remainder)
         ' Get the tens digit.
         result = Math.DivRem(value, 10, remainder)
         If result > 0 Then returnString += New String("X"c, result)
         value = CByte(remainder)
         ' Get the fives digit.
         result = Math.DivRem(value, 5, remainder)
         If result > 0 Then returnString += "V"
         value = CByte(remainder)
         ' Add the ones digit.
         If remainder > 0 Then returnString += New String("I"c, remainder)

         ' Check whether we have too many X characters.
         Dim pos As Integer = returnString.IndexOf("XXXX")
         If pos >= 0 Then
            Dim xPos As Integer = returnString.IndexOf("L")
            If xPos >= 0 And xPos = pos - 1 Then
               returnString = returnString.Replace("LXXXX", "XC")
            Else
               returnString = returnString.Replace("XXXX", "XL")
            End If
         End If
         ' Check whether we have too many I characters
         pos = returnString.IndexOf("IIII")
         If pos >= 0 Then
            If returnString.IndexOf("V") >= 0 Then
               returnString = returnString.Replace("VIIII", "IX")
            Else
               returnString = returnString.Replace("IIII", "IV")
            End If
         End If
         Return returnString
      End If

      ' Use default for all other formatting.
      If TypeOf obj Is IFormattable Then
         Return CType(obj, IFormattable).ToString(fmt, CultureInfo.CurrentCulture)
      Else
         Return obj.ToString()
      End If
   End Function
End Class

Module Example
   Public Sub Main()
      Dim n As Integer = 10
      Dim value As Double = 16.935
      Dim day As DateTime = Date.Now
      Dim provider As New InterceptProvider()
      Console.WriteLine(String.Format(provider, "{0:N0}: {1:C2} on {2:d}", n, value, day))
      Console.WriteLine()
      Console.WriteLine(String.Format(provider, "{0}: {1:F}", "Today",
                                      CType(Date.Now.DayOfWeek, DayOfWeek)))
      Console.WriteLine()
      Console.WriteLine(String.Format(provider, "{0:X}, {1}, {2}\n",
                                      CByte(2), CByte(12), CByte(199)))
      Console.WriteLine()
      Console.WriteLine(String.Format(provider, "{0:R}, {1:R}, {2:R}",
                                      CByte(2), CByte(12), CByte(199)))
   End Sub
End Module
' The example displays the following output:
'    Provider: InterceptProvider, Object: 10, Format String: N0
'    Provider: InterceptProvider, Object: 16.935, Format String: C2
'    Provider: InterceptProvider, Object: 1/31/2013 6:10:28 PM, Format String: d
'    10: $16.94 on 1/31/2013
'
'    Provider: InterceptProvider, Object: Today: , Format String: <null>
'    Provider: InterceptProvider, Object: Thursday, Format String: F
'    Today: : Thursday
'
'    Provider: InterceptProvider, Object: 2, Format String: X
'    Provider: InterceptProvider, Object: 12, Format String: <null>
'    Provider: InterceptProvider, Object: 199, Format String: <null>
'    2, 12, 199
'
'    Provider: InterceptProvider, Object: 2, Format String: R
'    Provider: InterceptProvider, Object: 12, Format String: R
'    Provider: InterceptProvider, Object: 199, Format String: R
'    II, XII, CXCIX

FAQ

Mengapa Anda merekomendasikan interpolasi string dibandingkan panggilan ke metode String.Format?

Interpolasi string adalah:

  • Lebih fleksibel. Ini dapat digunakan dalam string apa pun tanpa memerlukan panggilan ke metode yang mendukung pemformatan komposit. Jika tidak, Anda harus memanggil Format metode atau metode lain yang mendukung pemformatan komposit, seperti Console.WriteLine atau StringBuilder.AppendFormat.
  • Lebih mudah dibaca. Karena ekspresi untuk disisipkan ke dalam string muncul dalam ekspresi terinterpolasi daripada dalam daftar argumen, string terinterpolasi lebih mudah dikodekan dan dibaca. String terinterpolasi juga dapat digunakan dalam operasi perangkaian string untuk menghasilkan kode yang lebih ringkas dan lebih jelas.

Perbandingan dua contoh kode berikut mengilustrasikan keunggulan string terinterpolasi atas perangkaian string dan panggilan ke metode pemformatan komposit. Penggunaan beberapa operasi perangkaian string dalam contoh berikut menghasilkan kode verbose dan sulit dibaca.

string[] names = { "Balto", "Vanya", "Dakota", "Samuel", "Koani", "Yiska", "Yuma" };
string output = names[0] + ", " + names[1] + ", " + names[2] + ", " +
                names[3] + ", " + names[4] + ", " + names[5] + ", " +
                names[6];

output += "\n";
var date = DateTime.Now;
output += String.Format("It is {0:t} on {0:d}. The day of the week is {1}.",
                        date, date.DayOfWeek);
Console.WriteLine(output);
// The example displays the following output:
//     Balto, Vanya, Dakota, Samuel, Koani, Yiska, Yuma
//     It is 10:29 AM on 1/8/2018. The day of the week is Monday.
open System

let names = [| "Balto"; "Vanya"; "Dakota"; "Samuel"; "Koani"; "Yiska"; "Yuma" |]
let output = 
    names[0] + ", " + names[1] + ", " + names[2] + ", " + 
    names[3] + ", " + names[4] + ", " + names[5] + ", " + 
    names[6] + "\n"

let date = DateTime.Now
output + String.Format("It is {0:t} on {0:d}. The day of the week is {1}.", date, date.DayOfWeek)
|> printfn "%s"
// The example displays the following output:
//     Balto, Vanya, Dakota, Samuel, Koani, Yiska, Yuma
//     It is 10:29 AM on 1/8/2018. The day of the week is Monday.

Module Example12
    Public Sub Main()
        Dim names = {"Balto", "Vanya", "Dakota", "Samuel", "Koani", "Yiska", "Yuma"}
        Dim output = names(0) + ", " + names(1) + ", " + names(2) + ", " +
                   names(3) + ", " + names(4) + ", " + names(5) + ", " +
                   names(6)

        output += vbCrLf
        Dim dat = DateTime.Now
        output += String.Format("It is {0:t} on {0:d}. The day of the week is {1}.",
                              dat, dat.DayOfWeek)
        Console.WriteLine(output)
    End Sub
End Module
' The example displays the following output:
'     Balto, Vanya, Dakota, Samuel, Koani, Yiska, Yuma
'     It is 10:29 AM on 1/8/2018. The day of the week is Monday.

Sebaliknya, penggunaan string terinterpolasi dalam contoh berikut menghasilkan kode yang jauh lebih jelas dan lebih ringkas daripada pernyataan perangkaian string dan panggilan ke Format metode dalam contoh sebelumnya.

string[] names = { "Balto", "Vanya", "Dakota", "Samuel", "Koani", "Yiska", "Yuma" };
string output = $"{names[0]}, {names[1]}, {names[2]}, {names[3]}, {names[4]}, " +
                $"{names[5]}, {names[6]}";

var date = DateTime.Now;
output += $"\nIt is {date:t} on {date:d}. The day of the week is {date.DayOfWeek}.";
Console.WriteLine(output);
// The example displays the following output:
//     Balto, Vanya, Dakota, Samuel, Koani, Yiska, Yuma
//     It is 10:29 AM on 1/8/2018. The day of the week is Monday.
open System

let names = [| "Balto"; "Vanya"; "Dakota"; "Samuel"; "Koani"; "Yiska"; "Yuma" |]
let output = $"{names[0]}, {names[1]}, {names[2]}, {names[3]}, {names[4]}, {names[5]}, {names[6]}"  

let date = DateTime.Now
output + $"\nIt is {date:t} on {date:d}. The day of the week is {date.DayOfWeek}."
|> printfn "%s" 
// The example displays the following output:
//     Balto, Vanya, Dakota, Samuel, Koani, Yiska, Yuma
//     It is 10:29 AM on 1/8/2018. The day of the week is Monday.

Module Example13
    Public Sub Main()
        Dim names = {"Balto", "Vanya", "Dakota", "Samuel", "Koani", "Yiska", "Yuma"}
        Dim output = $"{names(0)}, {names(1)}, {names(2)}, {names(3)}, {names(4)}, " +
                   $"{names(5)}, {names(6)}"

        Dim dat = DateTime.Now
        output += $"{vbCrLf}It is {dat:t} on {dat:d}. The day of the week is {dat.DayOfWeek}."
        Console.WriteLine(output)
    End Sub
End Module
' The example displays the following output:
'     Balto, Vanya, Dakota, Samuel, Koani, Yiska, Yuma
'     It is 10:29 AM on 1/8/2018. The day of the week is Monday.

Di mana saya dapat menemukan string format yang telah ditentukan sebelumnya?

Bagaimana cara mengontrol perataan string hasil yang menggantikan item format?

Sintaks umum item format adalah:

{index[,width][: formatString]}

width adalah bilangan bulat bertanda tangan yang menentukan lebar bidang. Jika nilai ini negatif, teks di kolom diratakan kiri. Kalau positif, teks rata kanan.

Bagaimana cara mengontrol jumlah digit setelah pemisah desimal?

Semua string format numerik standar kecuali "D" (yang digunakan hanya dengan bilangan bulat), "G", "R", dan "X" memungkinkan penentu presisi yang menentukan jumlah digit desimal dalam string hasil. Contoh berikut menggunakan string format numerik standar untuk mengontrol jumlah digit desimal dalam string hasil.

object[] values = { 1603, 1794.68235, 15436.14 };
string result;
foreach (var value in values)
{
    result = String.Format("{0,12:C2}   {0,12:E3}   {0,12:F4}   {0,12:N3}  {1,12:P2}\n",
                           Convert.ToDouble(value), Convert.ToDouble(value) / 10000);
    Console.WriteLine(result);
}
// The example displays output like the following:
//       $1,603.00     1.603E+003      1603.0000      1,603.000       16.03 %
//
//       $1,794.68     1.795E+003      1794.6824      1,794.682       17.95 %
//
//      $15,436.14     1.544E+004     15436.1400     15,436.140      154.36 %
open System

let values: obj list = [ 1603, 1794.68235, 15436.14 ]
for value in values do
   String.Format("{0,12:C2}   {0,12:E3}   {0,12:F4}   {0,12:N3}  {1,12:P2}\n", Convert.ToDouble(value), Convert.ToDouble(value) / 10000.)
   |> printfn "%s"
// The example displays output like the following:
//       $1,603.00     1.603E+003      1603.0000      1,603.000       16.03 %
//    
//       $1,794.68     1.795E+003      1794.6824      1,794.682       17.95 %
//    
//      $15,436.14     1.544E+004     15436.1400     15,436.140      154.36 %
Module Example7
    Public Sub Main()
        Dim values() As Object = {1603, 1794.68235, 15436.14}
        Dim result As String
        For Each value In values
            result = String.Format("{0,12:C2}   {0,12:E3}   {0,12:F4}   {0,12:N3}  {1,12:P2}",
                                value, CDbl(value) / 10000)
            Console.WriteLine(result)
            Console.WriteLine()
        Next
    End Sub
End Module
' The example displays the following output:
'       $1,603.00     1.603E+003      1603.0000      1,603.000       16.03 %
'    
'       $1,794.68     1.795E+003      1794.6824      1,794.682       17.95 %
'    
'      $15,436.14     1.544E+004     15436.1400     15,436.140      154.36 %

Jika Anda menggunakan string format numerik kustom, gunakan penentu format "0" untuk mengontrol jumlah digit desimal dalam string hasil, seperti yang ditunjukkan contoh berikut.

decimal value = 16309.5436m;
string result = String.Format("{0,12:#.00000} {0,12:0,000.00} {0,12:000.00#}",
                              value);
Console.WriteLine(result);
// The example displays the following output:
//        16309.54360    16,309.54    16309.544
let value = 16309.5436m
String.Format("{0,12:#.00000} {0,12:0,000.00} {0,12:000.00#}", value)
|> printfn "%s"
// The example displays the following output:
//        16309.54360    16,309.54    16309.544
Module Example8
    Public Sub Main()
        Dim value As Decimal = 16309.5436D
        Dim result As String = String.Format("{0,12:#.00000} {0,12:0,000.00} {0,12:000.00#}",
                                           value)
        Console.WriteLine(result)
    End Sub
End Module
' The example displays the following output:
'    16309.54360    16,309.54    16309.544

Bagaimana cara mengontrol jumlah digit integral?

Secara default, operasi pemformatan hanya menampilkan digit integral bukan nol. Jika Anda memformat bilangan bulat, Anda dapat menggunakan penentu presisi dengan string format standar "D" dan "X" untuk mengontrol jumlah digit.

int value = 1326;
string result = String.Format("{0,10:D6} {0,10:X8}", value);
Console.WriteLine(result);
// The example displays the following output:
//     001326   0000052E
open System

let value = 1326
String.Format("{0,10:D6} {0,10:X8}", value)
|> printfn "%s"
// The example displays the following output:
//     001326   0000052E
Module Example10
    Public Sub Main()
        Dim value As Integer = 1326
        Dim result As String = String.Format("{0,10:D6} {0,10:X8}", value)
        Console.WriteLine(result)
    End Sub
End Module
' The example displays the following output:
'       001326   0000052E

Anda dapat mengapit bilangan bulat atau angka floating-point dengan nol di depan untuk menghasilkan string hasil dengan jumlah digit integral tertentu dengan menggunakan penentu format numerik kustom "0", seperti yang ditunjukkan contoh berikut.

int value = 16342;
string result = String.Format("{0,18:00000000} {0,18:00000000.000} {0,18:000,0000,000.0}",
                              value);
Console.WriteLine(result);
// The example displays the following output:
//           00016342       00016342.000    0,000,016,342.0
open System

let value = 16342
String.Format("{0,18:00000000} {0,18:00000000.000} {0,18:000,0000,000.0}", value)
|> printfn "%s"
// The example displays the following output:
//           00016342       00016342.000    0,000,016,342.0
Module Example9
    Public Sub Main()
        Dim value As Integer = 16342
        Dim result As String = String.Format("{0,18:00000000} {0,18:00000000.000} {0,18:000,0000,000.0}",
                                           value)
        Console.WriteLine(result)
    End Sub
End Module
' The example displays the following output:
'           00016342       00016342.000    0,000,016,342.0

Berapa banyak item yang dapat saya sertakan dalam daftar format?

Tidak ada batas praktis. Parameter kedua metode Format(IFormatProvider, String, Object[]) ditandai dengan atribut ParamArrayAttribute, yang memungkinkan Anda untuk menyertakan daftar yang dipisahkan oleh pembatas atau array objek sebagai daftar format Anda.

Bagaimana cara menyertakan kurung kurawal harfiah ("{" dan "}") dalam string hasil?

Misalnya, bagaimana Anda mencegah panggilan metode berikut mencetuskan FormatException pengecualian?

result = String.Format("The text has {0} '{' characters and {1} '}' characters.",
                       nOpen, nClose);
let result = 
    String.Format("The text has {0} '{' characters and {1} '}' characters.", nOpen, nClose)
result = String.Format("The text has {0} '{' characters and {1} '}' characters.",
                 nOpen, nClose)

Simbol kurung kurawal buka atau tutup tunggal selalu ditafsirkan sebagai awal atau akhir sebuah elemen format. Untuk ditafsirkan secara harfiah, itu harus dilewati. Anda lolos dari kurung kurawal dengan menambahkan kurung kurawal lain ("{{" dan "}}" alih-alih "{" dan "}"), seperti dalam panggilan metode berikut:

string result;
int nOpen = 1;
int nClose = 2;
result = String.Format("The text has {0} '{{' characters and {1} '}}' characters.",
                       nOpen, nClose);
Console.WriteLine(result);
let result =
    String.Format("The text has {0} '{{' characters and {1} '}}' characters.", nOpen, nClose)
result = String.Format("The text has {0} '{{' characters and {1} '}}' characters.",
                 nOpen, nClose)

Namun, bahkan kurung kurawal yang lolos mudah disalahartikan. Kami menyarankan agar Anda menyertakan kurung kurawal dalam daftar format dan menggunakan item format untuk menyisipkannya dalam string hasil, seperti yang ditunjukkan contoh berikut.

string result;
int nOpen = 1;
int nClose = 2;
result = String.Format("The text has {0} '{1}' characters and {2} '{3}' characters.",
                       nOpen, "{", nClose, "}");
Console.WriteLine(result);
let result =
    String.Format("The text has {0} '{1}' characters and {2} '{3}' characters.", nOpen, "{", nClose, "}")
result = String.Format("The text has {0} '{1}' characters and {2} '{3}' characters.",
                 nOpen, "{", nClose, "}")

Mengapa panggilan saya ke metode String.Format melempar FormatException?

Penyebab paling umum pengecualian adalah bahwa indeks item format tidak sesuai dengan objek dalam daftar format. Biasanya ini menunjukkan bahwa Anda telah salah menjumlahkan indeks item format atau Anda lupa menyertakan objek dalam daftar format. Mencoba menyertakan karakter kurung kurawal kiri atau kanan yang tidak dilewati juga menimbulkan FormatException. Kadang-kadang, pengecualian adalah hasil dari kesalahan ketik; misalnya, kesalahan umum adalah salah ketik "[" (tanda kurung kiri) alih-alih "{" (kurung kiri).

Jika metode Format(System.IFormatProvider,System.String,System.Object[]) mendukung array parameter, mengapa kode saya melempar pengecualian saat saya menggunakan array?

Misalnya, kode berikut melemparkan FormatException pengecualian:

Random rnd = new Random();
int[] numbers = new int[4];
int total = 0;
for (int ctr = 0; ctr <= 2; ctr++)
{
    int number = rnd.Next(1001);
    numbers[ctr] = number;
    total += number;
}
numbers[3] = total;
Console.WriteLine($"{numbers} + {1} + {2} = {3}");
open System

let rnd = Random()
let mutable total = 0
let numbers = Array.zeroCreate<int> 4
for i = 0 to 2 do
   let number = rnd.Next 1001
   numbers[i] <- number
   total <- total + number
numbers[3] <- total
Console.WriteLine("{0} + {1} + {2} = {3}", numbers)

Module Example5a
    Public Sub Main()
        Dim rnd As New Random()
        Dim numbers(3) As Integer
        Dim total As Integer = 0
        For ctr = 0 To 2
            Dim number As Integer = rnd.Next(1001)
            numbers(ctr) = number
            total += number
        Next
        numbers(3) = total
        Console.WriteLine("{0} + {1} + {2} = {3}", numbers)
    End Sub
End Module

Ini adalah masalah resolusi kelebihan beban kompilator. Karena pengkompilasi tidak dapat mengonversi array bilangan bulat ke array objek, ia memperlakukan array bilangan bulat sebagai argumen tunggal, sehingga memanggil Format(String, Object) metode . Pengecualian dilemparkan karena ada empat item format tetapi hanya satu item dalam daftar format.

Karena Visual Basic maupun C# tidak dapat mengonversi array bilangan bulat ke array objek, Anda harus melakukan konversi sendiri sebelum memanggil Format(String, Object[]) metode . Contoh berikut menyediakan satu implementasi.

Random rnd = new Random();
int[] numbers = new int[4];
int total = 0;
for (int ctr = 0; ctr <= 2; ctr++)
{
    int number = rnd.Next(1001);
    numbers[ctr] = number;
    total += number;
}
numbers[3] = total;
object[] values = new object[numbers.Length];
numbers.CopyTo(values, 0);
Console.WriteLine($"{values} + {1} + {2} = {3}");
open System

let rnd = Random()
let numbers = Array.zeroCreate<int> 4
let mutable total = 0
for i = 0 to 2 do
   let number = rnd.Next 1001
   numbers[i] <- number
   total <- total + number
numbers[3] <- total
let values = Array.zeroCreate<obj> numbers.Length
numbers.CopyTo(values, 0)
Console.WriteLine("{0} + {1} + {2} = {3}", values)
Imports System.Collections.Generic

Module Example6
    Public Sub Main()
        Dim rnd As New Random()
        Dim numbers(3) As Integer
        Dim total As Integer = 0
        For ctr = 0 To 2
            Dim number As Integer = rnd.Next(1001)
            numbers(ctr) = number
            total += number
        Next
        numbers(3) = total
        Dim values(numbers.Length - 1) As Object
        numbers.CopyTo(values, 0)
        Console.WriteLine("{0} + {1} + {2} = {3}", values)
    End Sub
End Module

Keterangan

Important

Alih-alih memanggil metode String.Format atau menggunakan string format komposit, Anda dapat menggunakan string terinterpolasi jika bahasa Anda mendukungnya. String terinterpolasi adalah string yang berisi ekspresi terinterpolasi. Setiap ekspresi terinterpolasi dievaluasi dengan nilai ekspresi dan disertakan dalam string hasil ketika string tersebut diberikan. Untuk informasi selengkapnya, lihat Interpolasi string (Referensi C#) dan String Terinterpolasi (Referensi Visual Basic).

Format(IFormatProvider, String, Object, Object, Object)

Sumber:
String.Manipulation.cs
Sumber:
String.Manipulation.cs
Sumber:
String.Manipulation.cs
Sumber:
String.Manipulation.cs
Sumber:
String.Manipulation.cs

Mengganti item format dalam string dengan representasi string dari tiga objek yang ditentukan. Parameter memasok informasi pemformatan khusus budaya.

public:
 static System::String ^ Format(IFormatProvider ^ provider, System::String ^ format, System::Object ^ arg0, System::Object ^ arg1, System::Object ^ arg2);
public static string Format(IFormatProvider provider, string format, object arg0, object arg1, object arg2);
public static string Format(IFormatProvider? provider, string format, object? arg0, object? arg1, object? arg2);
static member Format : IFormatProvider * string * obj * obj * obj -> string
Public Shared Function Format (provider As IFormatProvider, format As String, arg0 As Object, arg1 As Object, arg2 As Object) As String

Parameter

provider
IFormatProvider

Objek yang memasok informasi pemformatan khusus budaya.

arg0
Object

Objek pertama yang akan diformat.

arg1
Object

Objek kedua yang akan diformat.

arg2
Object

Objek ketiga yang akan diformat.

Mengembalikan

Salinan format di mana item format telah digantikan oleh representasi string dari arg0, , arg1dan arg2.

Pengecualian

format adalah null.

format tidak valid.

-atau-

Indeks item format kurang dari nol, atau lebih besar dari dua.

Keterangan

Important

Alih-alih memanggil metode String.Format atau menggunakan string format komposit, Anda dapat menggunakan string terinterpolasi jika bahasa Anda mendukungnya. String terinterpolasi adalah string yang berisi ekspresi terinterpolasi. Setiap ekspresi terinterpolasi dievaluasi dengan nilai ekspresi dan disertakan dalam string hasil ketika string tersebut diberikan. Untuk informasi selengkapnya, lihat Interpolasi string (Referensi C#) dan String Terinterpolasi (Referensi Visual Basic).

Metode ini menggunakan fitur pemformatan komposit untuk mengonversi tiga ekspresi ke representasi stringnya dan untuk menyematkan representasi tersebut dalam string. Dalam melakukan konversi, metode menggunakan pemformatan sensitif budaya atau formatter kustom. Metode mengonversi setiap Object argumen ke representasi stringnya dengan memanggil metode ToString(IFormatProvider) atau, jika item format terkait objek menyertakan string format, dengan memanggil metode ToString(String,IFormatProvider). Jika metode ini tidak ada, metode ini memanggil metode ToString tanpa parameter objek.

Namun, saat memanggil String.Format metode , tidak perlu fokus pada kelebihan beban tertentu yang ingin Anda panggil. Sebagai gantinya, Anda dapat memanggil metode dengan objek yang menyediakan pemformatan sensitif budaya atau kustom dan string format komposit yang menyertakan satu atau beberapa item format. Anda menetapkan setiap item format indeks numerik; indeks pertama dimulai pada 0. Selain string awal, panggilan metode Anda harus memiliki argumen tambahan sebanyak yang memiliki nilai indeks. Misalnya, string yang item formatnya memiliki indeks 0 dan 1 harus memiliki 2 argumen; satu dengan indeks 0 hingga 5 harus memiliki 6 argumen. Pengkompilasi bahasa kemudian akan menyelesaikan panggilan metode Anda ke kelebihan beban String.Format metode tertentu.

Untuk dokumentasi lebih rinci tentang menggunakan metode ini String.Format , lihat Mulai menggunakan metode String.Format dan Metode mana yang saya panggil?.

Berlaku untuk

Format(IFormatProvider, String, Object, Object)

Sumber:
String.Manipulation.cs
Sumber:
String.Manipulation.cs
Sumber:
String.Manipulation.cs
Sumber:
String.Manipulation.cs
Sumber:
String.Manipulation.cs

Mengganti item format dalam string dengan representasi string dari dua objek yang ditentukan. Parameter memasok informasi pemformatan khusus budaya.

public:
 static System::String ^ Format(IFormatProvider ^ provider, System::String ^ format, System::Object ^ arg0, System::Object ^ arg1);
public static string Format(IFormatProvider provider, string format, object arg0, object arg1);
public static string Format(IFormatProvider? provider, string format, object? arg0, object? arg1);
static member Format : IFormatProvider * string * obj * obj -> string
Public Shared Function Format (provider As IFormatProvider, format As String, arg0 As Object, arg1 As Object) As String

Parameter

provider
IFormatProvider

Objek yang memasok informasi pemformatan khusus budaya.

arg0
Object

Objek pertama yang akan diformat.

arg1
Object

Objek kedua yang akan diformat.

Mengembalikan

Salinan format item format digantikan oleh representasi arg0 string dan arg1.

Pengecualian

format adalah null.

format tidak valid.

-atau-

Indeks item format bukan nol atau satu.

Keterangan

Important

Alih-alih memanggil metode String.Format atau menggunakan string format komposit, Anda dapat menggunakan string terinterpolasi jika bahasa Anda mendukungnya. String terinterpolasi adalah string yang berisi ekspresi terinterpolasi. Setiap ekspresi terinterpolasi dievaluasi dengan nilai ekspresi dan disertakan dalam string hasil ketika string tersebut diberikan. Untuk informasi selengkapnya, lihat Interpolasi string (Referensi C#) dan String Terinterpolasi (Referensi Visual Basic).

Metode ini menggunakan fitur pemformatan komposit untuk mengonversi dua ekspresi ke representasi stringnya dan untuk menyematkan representasi tersebut dalam string. Dalam melakukan konversi, metode menggunakan pemformatan sensitif budaya atau formatter kustom. Metode mengonversi setiap Object argumen ke representasi stringnya dengan memanggil metode ToString(IFormatProvider) atau, jika item format terkait objek menyertakan string format, dengan memanggil metode ToString(String,IFormatProvider). Jika metode ini tidak ada, metode ini memanggil metode ToString tanpa parameter objek.

Namun, saat memanggil String.Format metode , tidak perlu fokus pada kelebihan beban tertentu yang ingin Anda panggil. Sebagai gantinya, Anda dapat memanggil metode dengan objek yang menyediakan pemformatan sensitif budaya atau kustom dan string format komposit yang menyertakan satu atau beberapa item format. Anda menetapkan setiap item format indeks numerik; indeks pertama dimulai pada 0. Selain string awal, panggilan metode Anda harus memiliki argumen tambahan sebanyak yang memiliki nilai indeks. Misalnya, string yang item formatnya memiliki indeks 0 dan 1 harus memiliki 2 argumen; satu dengan indeks 0 hingga 5 harus memiliki 6 argumen. Pengkompilasi bahasa kemudian akan menyelesaikan panggilan metode Anda ke kelebihan beban String.Format metode tertentu.

Untuk dokumentasi lebih rinci tentang menggunakan metode ini String.Format , lihat Mulai menggunakan metode String.Format dan Metode mana yang saya panggil?.

Berlaku untuk

Format(String, Object, Object)

Sumber:
String.Manipulation.cs
Sumber:
String.Manipulation.cs
Sumber:
String.Manipulation.cs
Sumber:
String.Manipulation.cs
Sumber:
String.Manipulation.cs

Mengganti item format dalam string dengan representasi string dari dua objek yang ditentukan.

public:
 static System::String ^ Format(System::String ^ format, System::Object ^ arg0, System::Object ^ arg1);
public static string Format(string format, object arg0, object arg1);
public static string Format(string format, object? arg0, object? arg1);
static member Format : string * obj * obj -> string
Public Shared Function Format (format As String, arg0 As Object, arg1 As Object) As String

Parameter

arg0
Object

Objek pertama yang akan diformat.

arg1
Object

Objek kedua yang akan diformat.

Mengembalikan

Salinan format item format digantikan oleh representasi arg0 string dan arg1.

Pengecualian

format adalah null.

format tidak valid.

-atau-

Indeks item format bukan nol atau satu.

Keterangan

Important

Alih-alih memanggil metode String.Format atau menggunakan string format komposit, Anda dapat menggunakan string terinterpolasi jika bahasa Anda mendukungnya. String terinterpolasi adalah string yang berisi ekspresi terinterpolasi. Setiap ekspresi terinterpolasi dievaluasi dengan nilai ekspresi dan disertakan dalam string hasil ketika string tersebut diberikan. Untuk informasi selengkapnya, lihat Interpolasi string (Referensi C#) dan String Terinterpolasi (Referensi Visual Basic).

Metode ini menggunakan fitur pemformatan komposit untuk mengonversi nilai dua ekspresi ke representasi stringnya dan untuk menyematkan representasi tersebut dalam string.

Namun, saat memanggil String.Format metode , tidak perlu fokus pada kelebihan beban tertentu yang ingin Anda panggil. Sebagai gantinya, Anda dapat memanggil metode dengan string format komposit yang menyertakan satu atau beberapa item format. Anda menetapkan setiap item format indeks numerik; indeks pertama dimulai pada 0. Selain string awal, panggilan metode Anda harus memiliki argumen tambahan sebanyak yang memiliki nilai indeks. Misalnya, string yang item formatnya memiliki indeks 0 dan 1 harus memiliki 2 argumen; satu dengan indeks 0 hingga 5 harus memiliki 6 argumen. Pengkompilasi bahasa kemudian akan menyelesaikan panggilan metode Anda ke kelebihan beban String.Format metode tertentu.

Untuk dokumentasi lebih rinci tentang menggunakan metode ini String.Format , lihat Mulai menggunakan metode String.Format dan Metode mana yang saya panggil?.

Contoh: Memformat dua argumen

Contoh ini menggunakan Format(String, Object, Object) metode untuk menampilkan data waktu dan suhu yang disimpan dalam objek generik Dictionary<TKey,TValue> . Perhatikan bahwa string format memiliki tiga item format, meskipun hanya ada dua objek untuk diformat. Ini karena objek pertama dalam daftar (nilai tanggal dan waktu) digunakan oleh dua item format: Item format pertama menampilkan waktu, dan yang kedua menampilkan tanggal.

Dictionary<DateTime, Double> temperatureInfo = new Dictionary<DateTime, Double>();
temperatureInfo.Add(new DateTime(2010, 6, 1, 14, 0, 0), 87.46);
temperatureInfo.Add(new DateTime(2010, 12, 1, 10, 0, 0), 36.81);

Console.WriteLine("Temperature Information:\n");
string output;
foreach (var item in temperatureInfo)
{
   output = String.Format("Temperature at {0,8:t} on {0,9:d}: {1,5:N1}°F",
                          item.Key, item.Value);
   Console.WriteLine(output);
}
// The example displays output like the following:
//       Temperature Information:
//
//       Temperature at  2:00 PM on  6/1/2010:  87.5°F
//       Temperature at 10:00 AM on 12/1/2010:  36.8°F
open System
open System.Collections.Generic

let temperatureInfo = Dictionary<DateTime, float>() 
temperatureInfo.Add(DateTime(2010, 6, 1, 14, 0, 0), 87.46)
temperatureInfo.Add(DateTime(2010, 12, 1, 10, 0, 0), 36.81)

printfn $"Temperature Information:\n"
for item in temperatureInfo do
   String.Format("Temperature at {0,8:t} on {0,9:d}: {1,5:N1}°F", item.Key, item.Value)
   |> printfn "%s"
// The example displays output like the following:
//       Temperature Information:
//       
//       Temperature at  2:00 PM on  6/1/2010:  87.5°F
//       Temperature at 10:00 AM on 12/1/2010:  36.8°F
Imports System.Collections.Generic

Module Example
   Public Sub Main()
      Dim temperatureInfo As New Dictionary(Of Date, Double) 
      temperatureInfo.Add(#6/1/2010 2:00PM#, 87.46)
      temperatureInfo.Add(#12/1/2010 10:00AM#, 36.81)
      
      Console.WriteLine("Temperature Information:")
      Console.WriteLine()
      Dim output As String   
      For Each item In temperatureInfo
         output = String.Format("Temperature at {0,8:t} on {0,9:d}: {1,5:N1}°F", _
                                item.Key, item.Value)
         Console.WriteLine(output)
      Next
   End Sub
End Module
' The example displays the following output:
'       Temperature Information:
'       
'       Temperature at  2:00 PM on  6/1/2010:  87.5°F
'       Temperature at 10:00 AM on 12/1/2010:  36.8°F

Lihat juga

Berlaku untuk

Format(IFormatProvider, CompositeFormat, ReadOnlySpan<Object>)

Sumber:
String.Manipulation.cs
Sumber:
String.Manipulation.cs
Sumber:
String.Manipulation.cs
Sumber:
String.Manipulation.cs

Mengganti item format atau item dalam CompositeFormat dengan representasi string objek terkait dalam format yang ditentukan.

public:
 static System::String ^ Format(IFormatProvider ^ provider, System::Text::CompositeFormat ^ format, ReadOnlySpan<System::Object ^> args);
public static string Format(IFormatProvider? provider, System.Text.CompositeFormat format, scoped ReadOnlySpan<object?> args);
public static string Format(IFormatProvider? provider, System.Text.CompositeFormat format, ReadOnlySpan<object?> args);
static member Format : IFormatProvider * System.Text.CompositeFormat * ReadOnlySpan<obj> -> string
Public Shared Function Format (provider As IFormatProvider, format As CompositeFormat, args As ReadOnlySpan(Of Object)) As String

Parameter

provider
IFormatProvider

Objek yang memasok informasi pemformatan khusus budaya.

args
ReadOnlySpan<Object>

Rentang objek untuk diformat.

Mengembalikan

String yang diformat.

Pengecualian

format adalah null.

Indeks item format lebih besar dari atau sama dengan jumlah argumen yang disediakan.

Berlaku untuk

Format(IFormatProvider, CompositeFormat, Object[])

Sumber:
String.Manipulation.cs
Sumber:
String.Manipulation.cs
Sumber:
String.Manipulation.cs
Sumber:
String.Manipulation.cs

Mengganti item format atau item dalam CompositeFormat dengan representasi string objek terkait dalam format yang ditentukan.

public:
 static System::String ^ Format(IFormatProvider ^ provider, System::Text::CompositeFormat ^ format, ... cli::array <System::Object ^> ^ args);
public static string Format(IFormatProvider? provider, System.Text.CompositeFormat format, params object?[] args);
static member Format : IFormatProvider * System.Text.CompositeFormat * obj[] -> string
Public Shared Function Format (provider As IFormatProvider, format As CompositeFormat, ParamArray args As Object()) As String

Parameter

provider
IFormatProvider

Objek yang memasok informasi pemformatan khusus budaya.

args
Object[]

Array objek untuk diformat.

Mengembalikan

String yang diformat.

Pengecualian

format atau args adalah null.

Indeks item format lebih besar dari atau sama dengan jumlah argumen yang disediakan.

Berlaku untuk

Format(String, Object, Object, Object)

Sumber:
String.Manipulation.cs
Sumber:
String.Manipulation.cs
Sumber:
String.Manipulation.cs
Sumber:
String.Manipulation.cs
Sumber:
String.Manipulation.cs

Mengganti item format dalam string dengan representasi string dari tiga objek yang ditentukan.

public:
 static System::String ^ Format(System::String ^ format, System::Object ^ arg0, System::Object ^ arg1, System::Object ^ arg2);
public static string Format(string format, object arg0, object arg1, object arg2);
public static string Format(string format, object? arg0, object? arg1, object? arg2);
static member Format : string * obj * obj * obj -> string
Public Shared Function Format (format As String, arg0 As Object, arg1 As Object, arg2 As Object) As String

Parameter

arg0
Object

Objek pertama yang akan diformat.

arg1
Object

Objek kedua yang akan diformat.

arg2
Object

Objek ketiga yang akan diformat.

Mengembalikan

Salinan format di mana item format telah digantikan oleh representasi string dari arg0, , arg1dan arg2.

Pengecualian

format adalah null.

format tidak valid.

-atau-

Indeks item format kurang dari nol, atau lebih besar dari dua.

Keterangan

Important

Alih-alih memanggil metode String.Format atau menggunakan string format komposit, Anda dapat menggunakan string terinterpolasi jika bahasa Anda mendukungnya. String terinterpolasi adalah string yang berisi ekspresi terinterpolasi. Setiap ekspresi terinterpolasi dievaluasi dengan nilai ekspresi dan disertakan dalam string hasil ketika string tersebut diberikan. Untuk informasi selengkapnya, lihat Interpolasi string (Referensi C#) dan String Terinterpolasi (Referensi Visual Basic).

Metode ini menggunakan fitur pemformatan komposit untuk mengonversi nilai tiga ekspresi ke representasi stringnya dan untuk menyematkan representasi tersebut dalam string.

Namun, saat memanggil String.Format metode , tidak perlu fokus pada kelebihan beban tertentu yang ingin Anda panggil. Sebagai gantinya, Anda dapat memanggil metode dengan string format komposit yang menyertakan satu atau beberapa item format. Anda menetapkan setiap item format indeks numerik; indeks pertama dimulai pada 0. Selain string awal, panggilan metode Anda harus memiliki argumen tambahan sebanyak yang memiliki nilai indeks. Misalnya, string yang item formatnya memiliki indeks 0 dan 1 harus memiliki 2 argumen; satu dengan indeks 0 hingga 5 harus memiliki 6 argumen. Pengkompilasi bahasa kemudian akan menyelesaikan panggilan metode Anda ke kelebihan beban String.Format metode tertentu.

Untuk dokumentasi lebih rinci tentang menggunakan metode ini String.Format , lihat Mulai menggunakan metode String.Format dan Metode mana yang saya panggil?.

Contoh: Memformat tiga argumen

Contoh ini menggunakan Format(String, Object, Object, Object) metode untuk membuat string yang mengilustrasikan hasil operasi Boolean dengan dua nilai bilangan And bulat. Perhatikan bahwa string format menyertakan enam item format, tetapi metode ini hanya memiliki tiga item dalam daftar parameternya, karena setiap item diformat dengan dua cara berbeda.

string formatString = "    {0,10} ({0,8:X8})\n" +
                      "And {1,10} ({1,8:X8})\n" +
                      "  = {2,10} ({2,8:X8})";
int value1 = 16932;
int value2 = 15421;
string result = string.Format(formatString,
                              value1, value2, value1 & value2);
Console.WriteLine(result);

// The example displays the following output:
//                16932 (00004224)
//       And      15421 (00003C3D)
//         =         36 (00000024)
open System

let formatString = 
    "    {0,10} ({0,8:X8})\nAnd {1,10} ({1,8:X8})\n  = {2,10} ({2,8:X8})"

let value1 = 16932
let value2 = 15421
String.Format(formatString, value1, value2, value1 &&& value2)
|> printfn "%s"
// The example displays the following output:
//                16932 (00004224)
//       And      15421 (00003C3D)
//         =         36 (00000024)
Public Module Example
   Public Sub Main()
      Dim formatString As String = "    {0,10} ({0,8:X8})" + vbCrLf +  _
                                   "And {1,10} ({1,8:X8})" + vbCrLf + _
                                   "  = {2,10} ({2,8:X8})"
      Dim value1 As Integer = 16932
      Dim value2 As Integer = 15421
      Dim result As String = String.Format(formatString, _
                                           value1, value2, value1 And value2)
      Console.WriteLine(result)                          
   End Sub
End Module
' The example displays the following output:
'                16932 (00004224)
'       And      15421 (00003C3D)
'         =         36 (00000024)

Lihat juga

Berlaku untuk

Format(IFormatProvider, String, Object[])

Sumber:
String.Manipulation.cs
Sumber:
String.Manipulation.cs
Sumber:
String.Manipulation.cs
Sumber:
String.Manipulation.cs
Sumber:
String.Manipulation.cs

Mengganti item format dalam string dengan representasi string objek terkait dalam array tertentu. Parameter memasok informasi pemformatan khusus budaya.

public:
 static System::String ^ Format(IFormatProvider ^ provider, System::String ^ format, ... cli::array <System::Object ^> ^ args);
public static string Format(IFormatProvider provider, string format, params object[] args);
public static string Format(IFormatProvider? provider, string format, params object?[] args);
static member Format : IFormatProvider * string * obj[] -> string
Public Shared Function Format (provider As IFormatProvider, format As String, ParamArray args As Object()) As String

Parameter

provider
IFormatProvider

Objek yang memasok informasi pemformatan khusus budaya.

args
Object[]

Array objek yang berisi nol atau lebih objek untuk diformat.

Mengembalikan

Salinan format di mana item format telah digantikan oleh representasi string dari objek yang sesuai di args.

Pengecualian

format atau args adalah null.

format tidak valid.

-atau-

Indeks item format kurang dari nol, atau lebih besar dari atau sama dengan panjang args array.

Keterangan

Important

Alih-alih memanggil metode String.Format atau menggunakan string format komposit, Anda dapat menggunakan string terinterpolasi jika bahasa Anda mendukungnya. String terinterpolasi adalah string yang berisi ekspresi terinterpolasi. Setiap ekspresi terinterpolasi dievaluasi dengan nilai ekspresi dan disertakan dalam string hasil ketika string tersebut diberikan. Untuk informasi selengkapnya, lihat Interpolasi string (Referensi C#) dan String Terinterpolasi (Referensi Visual Basic).

Metode ini menggunakan fitur pemformatan komposit untuk mengonversi empat ekspresi atau lebih ke representasi string mereka dan untuk menyematkan representasi tersebut dalam string. Dalam melakukan konversi, metode menggunakan pemformatan sensitif budaya atau formatter kustom. Metode mengonversi setiap Object argumen ke representasi stringnya dengan memanggil metode ToString(IFormatProvider) atau, jika item format terkait objek menyertakan string format, dengan memanggil metode ToString(String,IFormatProvider). Jika metode ini tidak ada, metode ini memanggil metode ToString tanpa parameter objek.

Namun, saat memanggil String.Format metode , tidak perlu fokus pada kelebihan beban tertentu yang ingin Anda panggil. Sebagai gantinya, Anda dapat memanggil metode dengan objek yang menyediakan pemformatan sensitif budaya atau kustom dan string format komposit yang menyertakan satu atau beberapa item format. Anda menetapkan setiap item format indeks numerik; indeks pertama dimulai pada 0. Selain string awal, panggilan metode Anda harus memiliki argumen tambahan sebanyak yang memiliki nilai indeks. Misalnya, string yang item formatnya memiliki indeks 0 dan 1 harus memiliki 2 argumen; satu dengan indeks 0 hingga 5 harus memiliki 6 argumen. Pengkompilasi bahasa kemudian akan menyelesaikan panggilan metode Anda ke kelebihan beban String.Format metode tertentu.

Untuk dokumentasi lebih rinci tentang menggunakan metode ini String.Format , lihat Mulai menggunakan metode String.Format dan Metode mana yang saya panggil?.

Contoh: Pemformatan sensitif budaya

Contoh ini menggunakan Format(IFormatProvider, String, Object[]) metode untuk menampilkan representasi string dari beberapa nilai tanggal dan waktu dan nilai numerik dengan menggunakan beberapa budaya yang berbeda.

string[] cultureNames = { "en-US", "fr-FR", "de-DE", "es-ES" };

DateTime dateToDisplay = new DateTime(2009, 9, 1, 18, 32, 0);
double value = 9164.32;

Console.WriteLine("Culture     Date                                Value\n");
foreach (string cultureName in cultureNames)
{
   System.Globalization.CultureInfo culture = new System.Globalization.CultureInfo(cultureName);
   string output = String.Format(culture, "{0,-11} {1,-35:D} {2:N}",
                                 culture.Name, dateToDisplay, value);
   Console.WriteLine(output);
}
// The example displays the following output:
//    Culture     Date                                Value
//
//    en-US       Tuesday, September 01, 2009         9,164.32
//    fr-FR       mardi 1 septembre 2009              9 164,32
//    de-DE       Dienstag, 1. September 2009         9.164,32
//    es-ES       martes, 01 de septiembre de 2009    9.164,32
open System
open System.Globalization

let cultureNames = [| "en-US"; "fr-FR"; "de-DE"; "es-ES" |]

let dateToDisplay = DateTime(2009, 9, 1, 18, 32, 0)
let value = 9164.32

printfn "Culture     Date                                Value\n"
for cultureName in cultureNames do
    let culture = CultureInfo cultureName
    String.Format(culture, "{0,-11} {1,-35:D} {2:N}", culture.Name, dateToDisplay, value)
    |> printfn "%s"
// The example displays the following output:
//    Culture     Date                                Value
//    
//    en-US       Tuesday, September 01, 2009         9,164.32
//    fr-FR       mardi 1 septembre 2009              9 164,32
//    de-DE       Dienstag, 1. September 2009         9.164,32
//    es-ES       martes, 01 de septiembre de 2009    9.164,32
Imports System.Globalization

Module Example2
   Public Sub Main()
      Dim cultureNames() As String = { "en-US", "fr-FR", "de-DE", "es-ES" }

      Dim dateToDisplay As Date = #9/1/2009 6:32PM#
      Dim value As Double = 9164.32

      Console.WriteLine("Culture     Date                                Value")
      Console.WriteLine()
      For Each cultureName As String In cultureNames
         Dim culture As New CultureInfo(cultureName)
         Dim output As String = String.Format(culture, "{0,-11} {1,-35:D} {2:N}", _
                                              culture.Name, dateToDisplay, value)
         Console.WriteLine(output)
      Next
   End Sub
End Module
' The example displays the following output:
'       Culture     Date                                Value
'
'       en-US       Tuesday, September 01, 2009         9,164.32
'       fr-FR       mardi 1 septembre 2009              9 164,32
'       de-DE       Dienstag, 1. September 2009         9.164,32
'       es-ES       martes, 01 de septiembre de 2009    9.164,32

Lihat juga

Berlaku untuk

Format(IFormatProvider, String, Object)

Sumber:
String.Manipulation.cs
Sumber:
String.Manipulation.cs
Sumber:
String.Manipulation.cs
Sumber:
String.Manipulation.cs
Sumber:
String.Manipulation.cs

Mengganti item format atau item dalam string tertentu dengan representasi string objek yang sesuai. Parameter memasok informasi pemformatan khusus budaya.

public:
 static System::String ^ Format(IFormatProvider ^ provider, System::String ^ format, System::Object ^ arg0);
public static string Format(IFormatProvider provider, string format, object arg0);
public static string Format(IFormatProvider? provider, string format, object? arg0);
static member Format : IFormatProvider * string * obj -> string
Public Shared Function Format (provider As IFormatProvider, format As String, arg0 As Object) As String

Parameter

provider
IFormatProvider

Objek yang memasok informasi pemformatan khusus budaya.

arg0
Object

Objek yang akan diformat.

Mengembalikan

Salinan format di mana item format atau item telah digantikan oleh representasi string .arg0

Pengecualian

format adalah null.

format tidak valid.

-atau-

Indeks item format bukan nol.

Keterangan

Important

Alih-alih memanggil metode String.Format atau menggunakan string format komposit, Anda dapat menggunakan string terinterpolasi jika bahasa Anda mendukungnya. String terinterpolasi adalah string yang berisi ekspresi terinterpolasi. Setiap ekspresi terinterpolasi dievaluasi dengan nilai ekspresi dan disertakan dalam string hasil ketika string tersebut diberikan. Untuk informasi selengkapnya, lihat Interpolasi string (Referensi C#) dan String Terinterpolasi (Referensi Visual Basic).

Metode ini menggunakan fitur pemformatan komposit untuk mengonversi nilai ekspresi ke representasi stringnya dan untuk menyematkan representasi tersebut dalam string. Dalam melakukan konversi, metode menggunakan pemformatan sensitif budaya atau formatter kustom. Metode ini mengonversi arg0 ke representasi stringnya dengan memanggil metode ToString(IFormatProvider) atau, jika item format terkait objek menyertakan string format, dengan memanggil metode ToString(String,IFormatProvider). Jika metode ini tidak ada, metode ini memanggil metode ToString tanpa parameter objek.

Namun, saat memanggil String.Format metode , tidak perlu fokus pada kelebihan beban tertentu yang ingin Anda panggil. Sebagai gantinya, Anda dapat memanggil metode dengan objek yang menyediakan pemformatan sensitif budaya atau kustom dan string format komposit yang menyertakan satu atau beberapa item format. Anda menetapkan setiap item format indeks numerik; indeks pertama dimulai pada 0. Selain string awal, panggilan metode Anda harus memiliki argumen tambahan sebanyak yang memiliki nilai indeks. Misalnya, string yang item formatnya memiliki indeks 0 dan 1 harus memiliki 2 argumen; satu dengan indeks 0 hingga 5 harus memiliki 6 argumen. Pengkompilasi bahasa kemudian akan menyelesaikan panggilan metode Anda ke kelebihan beban String.Format metode tertentu.

Untuk dokumentasi lebih rinci tentang menggunakan metode ini String.Format , lihat Mulai menggunakan metode String.Format dan Metode mana yang saya panggil?.

Berlaku untuk

Format(String, ReadOnlySpan<Object>)

Sumber:
String.Manipulation.cs
Sumber:
String.Manipulation.cs
Sumber:
String.Manipulation.cs

Mengganti item format dalam string tertentu dengan representasi string objek terkait dalam rentang yang ditentukan.

public:
 static System::String ^ Format(System::String ^ format, ReadOnlySpan<System::Object ^> args);
public static string Format(string format, scoped ReadOnlySpan<object?> args);
static member Format : string * ReadOnlySpan<obj> -> string
Public Shared Function Format (format As String, args As ReadOnlySpan(Of Object)) As String

Parameter

args
ReadOnlySpan<Object>

Rentang objek yang berisi nol atau lebih objek untuk diformat.

Mengembalikan

Salinan format di mana item format telah digantikan oleh representasi string dari objek yang sesuai di args.

Berlaku untuk

Format(String, Object[])

Sumber:
String.Manipulation.cs
Sumber:
String.Manipulation.cs
Sumber:
String.Manipulation.cs
Sumber:
String.Manipulation.cs
Sumber:
String.Manipulation.cs

Mengganti item format dalam string tertentu dengan representasi string objek terkait dalam array tertentu.

public:
 static System::String ^ Format(System::String ^ format, ... cli::array <System::Object ^> ^ args);
public static string Format(string format, params object[] args);
public static string Format(string format, params object?[] args);
static member Format : string * obj[] -> string
Public Shared Function Format (format As String, ParamArray args As Object()) As String

Parameter

args
Object[]

Array objek yang berisi nol atau lebih objek untuk diformat.

Mengembalikan

Salinan format di mana item format telah digantikan oleh representasi string dari objek yang sesuai di args.

Pengecualian

format atau args adalah null.

format tidak valid.

-atau-

Indeks item format kurang dari nol, atau lebih besar dari atau sama dengan panjang args array.

Keterangan

Important

Alih-alih memanggil metode String.Format atau menggunakan string format komposit, Anda dapat menggunakan string terinterpolasi jika bahasa Anda mendukungnya. String terinterpolasi adalah string yang berisi ekspresi terinterpolasi. Setiap ekspresi terinterpolasi dievaluasi dengan nilai ekspresi dan disertakan dalam string hasil ketika string tersebut diberikan. Untuk informasi selengkapnya, lihat Interpolasi string (Referensi C#) dan String Terinterpolasi (Referensi Visual Basic).

Metode ini menggunakan fitur pemformatan komposit untuk mengonversi nilai empat ekspresi atau lebih ke representasi string mereka dan untuk menyematkan representasi tersebut dalam string. args Karena parameter ditandai dengan System.ParamArrayAttribute atribut , Anda dapat meneruskan objek ke metode sebagai argumen individual atau sebagai Object array.

Namun, saat memanggil String.Format metode , tidak perlu fokus pada kelebihan beban tertentu yang ingin Anda panggil. Sebagai gantinya, Anda dapat memanggil metode dengan string format komposit yang menyertakan satu atau beberapa item format. Anda menetapkan setiap item format indeks numerik; indeks pertama dimulai pada 0. Selain string awal, panggilan metode Anda harus memiliki argumen tambahan sebanyak yang memiliki nilai indeks. Misalnya, string yang item formatnya memiliki indeks 0 dan 1 harus memiliki 2 argumen; satu dengan indeks 0 hingga 5 harus memiliki 6 argumen. Pengkompilasi bahasa kemudian akan menyelesaikan panggilan metode Anda ke kelebihan beban String.Format metode tertentu.

Untuk dokumentasi lebih rinci tentang menggunakan metode ini String.Format , lihat Mulai menggunakan metode String.Format dan Metode mana yang saya panggil?.

Contoh: Memformat lebih dari tiga argumen

Contoh ini membuat string yang berisi data pada suhu tinggi dan rendah pada tanggal tertentu. String format komposit memiliki lima item format dalam contoh C# dan enam dalam contoh Visual Basic. Dua item format menentukan lebar representasi string nilai yang sesuai, dan item format pertama juga menyertakan string format tanggal dan waktu standar.

DateTime date1 = new DateTime(2009, 7, 1);
TimeSpan hiTime = new TimeSpan(14, 17, 32);
decimal hiTemp = 62.1m;
TimeSpan loTime = new TimeSpan(3, 16, 10);
decimal loTemp = 54.8m;

string result1 = String.Format("Temperature on {0:d}:\n{1,11}: {2} degrees (hi)\n{3,11}: {4} degrees (lo)",
                               date1, hiTime, hiTemp, loTime, loTemp);
Console.WriteLine(result1);
Console.WriteLine();

string result2 = String.Format("Temperature on {0:d}:\n{1,11}: {2} degrees (hi)\n{3,11}: {4} degrees (lo)",
                               new object[] { date1, hiTime, hiTemp, loTime, loTemp });
Console.WriteLine(result2);
// The example displays output like the following:
//       Temperature on 7/1/2009:
//          14:17:32: 62.1 degrees (hi)
//          03:16:10: 54.8 degrees (lo)
//       Temperature on 7/1/2009:
//          14:17:32: 62.1 degrees (hi)
//          03:16:10: 54.8 degrees (lo)
let date1 = DateTime(2009, 7, 1)
let hiTime = TimeSpan(14, 17, 32)
let hiTemp = 62.1m 
let loTime = TimeSpan(3, 16, 10)
let loTemp = 54.8m 

String.Format("Temperature on {0:d}:\n{1,11}: {2} degrees (hi)\n{3,11}: {4} degrees (lo)", date1, hiTime, hiTemp, loTime, loTemp)
|> printfn "%s\n"
      
String.Format("Temperature on {0:d}:\n{1,11}: {2} degrees (hi)\n{3,11}: {4} degrees (lo)", [| date1 :> obj; hiTime; hiTemp; loTime; loTemp |])
|> printfn "%s"
// The example displays output like the following:
//       Temperature on 7/1/2009:
//          14:17:32: 62.1 degrees (hi)
//          03:16:10: 54.8 degrees (lo)
//       Temperature on 7/1/2009:
//          14:17:32: 62.1 degrees (hi)
//          03:16:10: 54.8 degrees (lo)
Module Example
   Public Sub Main()
      Dim date1 As Date = #7/1/2009#
      Dim hiTime As New TimeSpan(14, 17, 32)
      Dim hiTemp As Decimal = 62.1d 
      Dim loTime As New TimeSpan(3, 16, 10)
      Dim loTemp As Decimal = 54.8d 

      Dim result1 As String = String.Format("Temperature on {0:d}:{5}{1,11}: {2} degrees (hi){5}{3,11}: {4} degrees (lo)", _
                                           date1, hiTime, hiTemp, loTime, loTemp, vbCrLf)
      Console.WriteLine(result1)
      Console.WriteLine()
           
      Dim result2 As String = String.Format("Temperature on {0:d}:{5}{1,11}: {2} degrees (hi){5}{3,11}: {4} degrees (lo)", _
                                            New Object() { date1, hiTime, hiTemp, loTime, loTemp, vbCrLf })
      Console.WriteLine(result2)                                            
   End Sub
End Module
' The example displays the following output:
'       Temperature on 7/1/2009:
'          14:17:32: 62.1 degrees (hi)
'          03:16:10: 54.8 degrees (lo)
'
'       Temperature on 7/1/2009:
'          14:17:32: 62.1 degrees (hi)
'          03:16:10: 54.8 degrees (lo)

Anda juga dapat meneruskan objek yang akan diformat sebagai array daripada sebagai daftar argumen.

using System;

public class CityInfo
{
   public CityInfo(String name, int population, Decimal area, int year)
   {
      this.Name = name;
      this.Population = population;
      this.Area = area;
      this.Year = year;
   }
   
   public readonly String Name; 
   public readonly int Population;
   public readonly Decimal Area;
   public readonly int Year;
}

public class FormatExample10
{
   public static void Main()
   {
      CityInfo nyc2010 = new CityInfo("New York", 8175133, 302.64m, 2010);
      ShowPopulationData(nyc2010);
      CityInfo sea2010 = new CityInfo("Seattle", 608660, 83.94m, 2010);      
      ShowPopulationData(sea2010); 
   }

   private static void ShowPopulationData(CityInfo city)
   {
      object[] args = { city.Name, city.Year, city.Population, city.Area };
      String result = String.Format("{0} in {1}: Population {2:N0}, Area {3:N1} sq. feet", 
                                    args);
      Console.WriteLine(result); 
   }
}
// The example displays the following output:
//       New York in 2010: Population 8,175,133, Area 302.6 sq. feet
//       Seattle in 2010: Population 608,660, Area 83.9 sq. feet
open System

type CityInfo =
  { Name: string
    Population: int
    Area: Decimal
    Year: int }

let showPopulationData city =
    let args: obj[] = [| city.Name; city.Year; city.Population; city.Area |]
    String.Format("{0} in {1}: Population {2:N0}, Area {3:N1} sq. feet", args)
    |> printfn "%s"

{ Name = "New York"; Population = 8175133; Area = 302.64m; Year = 2010 }
|> showPopulationData

 
{ Name = "Seattle"; Population = 608660; Area = 83.94m; Year = 2010 }      
|> showPopulationData 

// The example displays the following output:
//       New York in 2010: Population 8,175,133, Area 302.6 sq. feet
//       Seattle in 2010: Population 608,660, Area 83.9 sq. feet
Public Class CityInfo
   Public Sub New(name As String, population As Integer, area As Decimal, year As Integer)
      Me.Name = name
      Me.Population = population
      Me.Area = area
      Me.Year = year
   End Sub
   
   Public ReadOnly Name As String
   Public ReadOnly Population As Integer
   Public ReadOnly Area As Decimal
   Public ReadOnly Year As Integer
End Class

Module Example
   Public Sub Main()
      Dim nyc2010 As New CityInfo("New York", 8175133, 302.64d, 2010)
      ShowPopulationData(nyc2010)
      Dim sea2010 As New CityInfo("Seattle", 608660, 83.94d, 2010)      
      ShowPopulationData(sea2010) 
   End Sub
   
   Private Sub ShowPopulationData(city As CityInfo)
      Dim args() As Object = { city.Name, city.Year, city.Population, city.Area }
      Dim result = String.Format("{0} in {1}: Population {2:N0}, Area {3:N1} sq. feet", args)
      Console.WriteLine(result) 
   End Sub
End Module
' The example displays the following output:
'       New York in 2010: Population 8,175,133, Area 302.6 sq. feet
'       Seattle in 2010: Population 608,660, Area 83.9 sq. feet

Lihat juga

Berlaku untuk

Format(String, Object)

Sumber:
String.Manipulation.cs
Sumber:
String.Manipulation.cs
Sumber:
String.Manipulation.cs
Sumber:
String.Manipulation.cs
Sumber:
String.Manipulation.cs

Mengganti satu atau beberapa item format dalam string dengan representasi string dari objek tertentu.

public:
 static System::String ^ Format(System::String ^ format, System::Object ^ arg0);
public static string Format(string format, object arg0);
public static string Format(string format, object? arg0);
static member Format : string * obj -> string
Public Shared Function Format (format As String, arg0 As Object) As String

Parameter

arg0
Object

Objek yang akan diformat.

Mengembalikan

Salinan format di mana item format digantikan oleh representasi string dari arg0.

Pengecualian

format adalah null.

Item format di format tidak valid.

-atau-

Indeks item format bukan nol.

Keterangan

Important

Alih-alih memanggil metode String.Format atau menggunakan string format komposit, Anda dapat menggunakan string terinterpolasi jika bahasa Anda mendukungnya. String terinterpolasi adalah string yang berisi ekspresi terinterpolasi. Setiap ekspresi terinterpolasi dievaluasi dengan nilai ekspresi dan disertakan dalam string hasil ketika string tersebut diberikan. Untuk informasi selengkapnya, lihat Interpolasi string (Referensi C#) dan String Terinterpolasi (Referensi Visual Basic).

Metode ini menggunakan fitur pemformatan komposit untuk mengonversi nilai ekspresi ke representasi stringnya dan untuk menyematkan representasi tersebut dalam string.

Namun, saat memanggil String.Format metode , tidak perlu fokus pada kelebihan beban tertentu yang ingin Anda panggil. Sebagai gantinya, Anda dapat memanggil metode dengan string format komposit yang menyertakan satu atau beberapa item format. Anda menetapkan setiap item format indeks numerik; indeks pertama dimulai pada 0. Selain string awal, panggilan metode Anda harus memiliki argumen tambahan sebanyak yang memiliki nilai indeks. Misalnya, string yang item formatnya memiliki indeks 0 dan 1 harus memiliki 2 argumen; satu dengan indeks 0 hingga 5 harus memiliki 6 argumen. Pengkompilasi bahasa kemudian akan menyelesaikan panggilan metode Anda ke kelebihan beban String.Format metode tertentu.

Untuk dokumentasi lebih rinci tentang menggunakan metode ini String.Format , lihat Mulai menggunakan metode String.Format dan Metode mana yang saya panggil?.

Contoh: Memformat satu argumen

Contoh berikut menggunakan Format(String, Object) metode untuk menyematkan usia individu di tengah string.

DateTime birthdate = new DateTime(1993, 7, 28);
DateTime[] dates = { new DateTime(1993, 8, 16),
                     new DateTime(1994, 7, 28),
                     new DateTime(2000, 10, 16),
                     new DateTime(2003, 7, 27),
                     new DateTime(2007, 5, 27) };

foreach (DateTime dateValue in dates)
{
   TimeSpan interval = dateValue - birthdate;
   // Get the approximate number of years, without accounting for leap years.
   int years = ((int) interval.TotalDays) / 365;
   // See if adding the number of years exceeds dateValue.
   string output;
   if (birthdate.AddYears(years) <= dateValue) {
      output = String.Format("You are now {0} years old.", years);
      Console.WriteLine(output);
   }
   else {
      output = String.Format("You are now {0} years old.", years - 1);
      Console.WriteLine(output);
   }
}
// The example displays the following output:
//       You are now 0 years old.
//       You are now 1 years old.
//       You are now 7 years old.
//       You are now 9 years old.
//       You are now 13 years old.
let birthdate = DateTime(1993, 7, 28)
let dates = 
    [ DateTime(1993, 8, 16) 
      DateTime(1994, 7, 28)
      DateTime(2000, 10, 16)
      DateTime(2003, 7, 27)
      DateTime(2007, 5, 27) ]

for dateValue in dates do
    let interval = dateValue - birthdate
    // Get the approximate number of years, without accounting for leap years.
    let years = (int interval.TotalDays) / 365
    // See if adding the number of years exceeds dateValue.
    if birthdate.AddYears years <= dateValue then
        String.Format("You are now {0} years old.", years)
    else
        String.Format("You are now {0} years old.", years - 1)
    |> printfn "%s"
// The example displays the following output:
//       You are now 0 years old.
//       You are now 1 years old.
//       You are now 7 years old.
//       You are now 9 years old.
//       You are now 13 years old.
Module Example
   Public Sub Main()
      Dim birthdate As Date = #7/28/1993#
      Dim dates() As Date = { #9/16/1993#, #7/28/1994#, #10/16/2000#, _
                              #7/27/2003#, #5/27/2007# }
      For Each dateValue As Date In dates
         Dim interval As TimeSpan = dateValue - birthdate
         ' Get the approximate number of years, without accounting for leap years.
         Dim years As Integer = CInt(interval.TotalDays) \ 365
         ' See if adding the number of years exceeds dateValue.
         Dim output As String
         If birthdate.AddYears(years) <= dateValue Then
            output = String.Format("You are now {0} years old.", years)
            Console.WriteLine(output)
         Else
            output = String.Format("You are now {0} years old.", years - 1)
            Console.WriteLine(output)   
         End If
      Next
   End Sub
End Module
' The example displays the following output:
'       You are now 0 years old.
'       You are now 1 years old.
'       You are now 7 years old.
'       You are now 9 years old.
'       You are now 13 years old.

Lihat juga

Berlaku untuk

Format(IFormatProvider, String, ReadOnlySpan<Object>)

Sumber:
String.Manipulation.cs
Sumber:
String.Manipulation.cs
Sumber:
String.Manipulation.cs

Mengganti item format dalam string dengan representasi string objek terkait dalam rentang tertentu. Parameter memasok informasi pemformatan khusus budaya.

public:
 static System::String ^ Format(IFormatProvider ^ provider, System::String ^ format, ReadOnlySpan<System::Object ^> args);
public static string Format(IFormatProvider? provider, string format, scoped ReadOnlySpan<object?> args);
static member Format : IFormatProvider * string * ReadOnlySpan<obj> -> string
Public Shared Function Format (provider As IFormatProvider, format As String, args As ReadOnlySpan(Of Object)) As String

Parameter

provider
IFormatProvider

Objek yang memasok informasi pemformatan khusus budaya.

args
ReadOnlySpan<Object>

Rentang objek yang berisi nol atau lebih objek untuk diformat.

Mengembalikan

Salinan format di mana item format telah digantikan oleh representasi string dari objek yang sesuai di args.

Berlaku untuk

Format<TArg0,TArg1,TArg2>(IFormatProvider, CompositeFormat, TArg0, TArg1, TArg2)

Sumber:
String.Manipulation.cs
Sumber:
String.Manipulation.cs
Sumber:
String.Manipulation.cs
Sumber:
String.Manipulation.cs

Mengganti item format atau item dalam CompositeFormat dengan representasi string objek terkait dalam format yang ditentukan.

public:
generic <typename TArg0, typename TArg1, typename TArg2>
 static System::String ^ Format(IFormatProvider ^ provider, System::Text::CompositeFormat ^ format, TArg0 arg0, TArg1 arg1, TArg2 arg2);
public static string Format<TArg0,TArg1,TArg2>(IFormatProvider? provider, System.Text.CompositeFormat format, TArg0 arg0, TArg1 arg1, TArg2 arg2);
static member Format : IFormatProvider * System.Text.CompositeFormat * 'TArg0 * 'TArg1 * 'TArg2 -> string
Public Shared Function Format(Of TArg0, TArg1, TArg2) (provider As IFormatProvider, format As CompositeFormat, arg0 As TArg0, arg1 As TArg1, arg2 As TArg2) As String

Jenis parameter

TArg0

Tipe objek pertama yang akan diformat.

TArg1

Jenis objek kedua yang akan diformat.

TArg2

Jenis objek ketiga yang akan diformat.

Parameter

provider
IFormatProvider

Objek yang memasok informasi pemformatan khusus budaya.

arg0
TArg0

Objek pertama yang akan diformat.

arg1
TArg1

Objek kedua yang akan diformat.

arg2
TArg2

Objek ketiga yang akan diformat.

Mengembalikan

String yang diformat.

Pengecualian

format adalah null.

Indeks item format lebih besar dari atau sama dengan jumlah argumen yang disediakan.

Berlaku untuk

Format<TArg0,TArg1>(IFormatProvider, CompositeFormat, TArg0, TArg1)

Sumber:
String.Manipulation.cs
Sumber:
String.Manipulation.cs
Sumber:
String.Manipulation.cs
Sumber:
String.Manipulation.cs

Mengganti item format atau item dalam CompositeFormat dengan representasi string objek terkait dalam format yang ditentukan.

public:
generic <typename TArg0, typename TArg1>
 static System::String ^ Format(IFormatProvider ^ provider, System::Text::CompositeFormat ^ format, TArg0 arg0, TArg1 arg1);
public static string Format<TArg0,TArg1>(IFormatProvider? provider, System.Text.CompositeFormat format, TArg0 arg0, TArg1 arg1);
static member Format : IFormatProvider * System.Text.CompositeFormat * 'TArg0 * 'TArg1 -> string
Public Shared Function Format(Of TArg0, TArg1) (provider As IFormatProvider, format As CompositeFormat, arg0 As TArg0, arg1 As TArg1) As String

Jenis parameter

TArg0

Tipe objek pertama yang akan diformat.

TArg1

Jenis objek kedua yang akan diformat.

Parameter

provider
IFormatProvider

Objek yang memasok informasi pemformatan khusus budaya.

arg0
TArg0

Objek pertama yang akan diformat.

arg1
TArg1

Objek kedua yang akan diformat.

Mengembalikan

String yang diformat.

Pengecualian

format adalah null.

Indeks item format lebih besar dari atau sama dengan jumlah argumen yang disediakan.

Berlaku untuk

Format<TArg0>(IFormatProvider, CompositeFormat, TArg0)

Sumber:
String.Manipulation.cs
Sumber:
String.Manipulation.cs
Sumber:
String.Manipulation.cs
Sumber:
String.Manipulation.cs

Mengganti item format atau item dalam CompositeFormat dengan representasi string objek terkait dalam format yang ditentukan.

public:
generic <typename TArg0>
 static System::String ^ Format(IFormatProvider ^ provider, System::Text::CompositeFormat ^ format, TArg0 arg0);
public static string Format<TArg0>(IFormatProvider? provider, System.Text.CompositeFormat format, TArg0 arg0);
static member Format : IFormatProvider * System.Text.CompositeFormat * 'TArg0 -> string
Public Shared Function Format(Of TArg0) (provider As IFormatProvider, format As CompositeFormat, arg0 As TArg0) As String

Jenis parameter

TArg0

Tipe objek pertama yang akan diformat.

Parameter

provider
IFormatProvider

Objek yang memasok informasi pemformatan khusus budaya.

arg0
TArg0

Objek pertama yang akan diformat.

Mengembalikan

String yang diformat.

Pengecualian

format adalah null.

Indeks item format lebih besar dari atau sama dengan jumlah argumen yang disediakan.

Berlaku untuk