Cara menggabungkan beberapa string (C # Guide)
Perangkaian adalah proses menambahkan satu string ke akhir string lain. Anda menggabungkan string dengan menggunakan operator +
. Untuk literal string dan konstanta string, penggabungan terjadi pada waktu kompilasi; tidak ada penggabungan run-time yang terjadi. Untuk variabel string, penggabungan hanya terjadi pada waktu berjalan.
Catatan
Contoh C# dalam artikel ini dijalankan di Try.NET pelari kode sebaris dan taman bermain. Pilih tombol Jalankan untuk menjalankan contoh di jendela interaktif. Setelah Anda menjalankan kode, Anda dapat memodifikasinya dan menjalankan kode yang dimodifikasi dengan memilih Jalankan lagi. Kode yang dimodifikasi berjalan di jendela interaktif atau, jika kompilasi gagal, jendela interaktif menampilkan semua pesan kesalahan pengompilasi C#.
Literal string
Contoh berikut membagi string panjang literal menjadi string yang lebih kecil untuk meningkatkan keterbacaan dalam kode sumber. Kode menggabungkan string yang lebih kecil untuk membuat string panjang literal. Bagian-bagian digabungkan menjadi satu string pada waktu kompilasi. Tidak ada biaya kinerja run-time terlepas dari jumlah string yang terlibat.
// Concatenation of literals is performed at compile time, not run time.
string text = "Historically, the world of data and the world of objects " +
"have not been well integrated. Programmers work in C# or Visual Basic " +
"and also in SQL or XQuery. On the one side are concepts such as classes, " +
"objects, fields, inheritance, and .NET Framework APIs. On the other side " +
"are tables, columns, rows, nodes, and separate languages for dealing with " +
"them. Data types often require translation between the two worlds; there are " +
"different standard functions. Because the object world has no notion of query, a " +
"query can only be represented as a string without compile-time type checking or " +
"IntelliSense support in the IDE. Transferring data from SQL tables or XML trees to " +
"objects in memory is often tedious and error-prone.";
System.Console.WriteLine(text);
operator +
dan +=
Untuk menggabungkan variabel string, Anda dapat menggunakan operator +
atau +=
, interpolasi string atau metode String.Format, String.Concat, String.Join atau StringBuilder.Append. Operator +
mudah digunakan dan membuat kode intuitif. Bahkan jika Anda menggunakan beberapa +
operator dalam satu pernyataan, konten string hanya disalin sekali. Kode berikut menunjukkan contoh penggunaan +
operator dan +=
untuk menggabungkan string:
string userName = "<Type your name here>";
string dateString = DateTime.Today.ToShortDateString();
// Use the + and += operators for one-time concatenations.
string str = "Hello " + userName + ". Today is " + dateString + ".";
System.Console.WriteLine(str);
str += " How are you today?";
System.Console.WriteLine(str);
Interpolasi string
Dalam beberapa ekspresi, lebih mudah untuk menggabungkan string menggunakan interpolasi string, seperti yang ditunjukkan oleh kode berikut:
string userName = "<Type your name here>";
string date = DateTime.Today.ToShortDateString();
// Use string interpolation to concatenate strings.
string str = $"Hello {userName}. Today is {date}.";
System.Console.WriteLine(str);
str = $"{str} How are you today?";
System.Console.WriteLine(str);
Catatan
Dalam operasi penggabungan string, kompiler C# memperlakukan string null sama dengan string kosong.
Dimulai dengan C# 10, Anda dapat menggunakan interpolasi string untuk menginisialisasi string konstan ketika semua ekspresi yang digunakan untuk tempat penampung juga merupakan string konstan.
String.Format
Metode lain untuk menggabungkan string adalah String.Format. Metode ini bekerja dengan baik ketika Anda membangun string dari sejumlah kecil string komponen.
StringBuilder
Dalam kasus lain, Anda mungkin menggabungkan string dalam loop di mana Anda tidak tahu berapa banyak string sumber yang Anda gabungkan, dan jumlah sebenarnya dari string sumber mungkin besar. Kelas StringBuilder ini dirancang untuk skenario ini. Kode berikut menggunakan Append metode StringBuilder kelas untuk menggabungkan string.
// Use StringBuilder for concatenation in tight loops.
var sb = new System.Text.StringBuilder();
for (int i = 0; i < 20; i++)
{
sb.AppendLine(i.ToString());
}
System.Console.WriteLine(sb.ToString());
Anda dapat membaca lebih lanjut tentang alasan untuk memilih perangkaian string atau StringBuilder
kelas.
String.Concat
atau String.Join
Opsi lain untuk menggabungkan string dari koleksi adalah menggunakan metode String.Concat. Gunakan String.Join metode jika pemisah harus memisahkan string sumber. Kode berikut menggabungkan berbagai kata menggunakan kedua metode:
string[] words = { "The", "quick", "brown", "fox", "jumps", "over", "the", "lazy", "dog." };
var unreadablePhrase = string.Concat(words);
System.Console.WriteLine(unreadablePhrase);
var readablePhrase = string.Join(" ", words);
System.Console.WriteLine(readablePhrase);
LINQ dan Enumerable.Aggregate
Akhirnya, Anda dapat menggunakan LINQ dan Enumerable.Aggregate metode untuk menggabungkan string dari koleksi. Metode ini menggabungkan string sumber menggunakan ekspresi lambda. Ekspresi lambda melakukan pekerjaan untuk menambahkan setiap string ke akumulasi yang ada. Contoh berikut menggabungkan array kata, menambahkan spasi antara setiap kata dalam array:
string[] words = { "The", "quick", "brown", "fox", "jumps", "over", "the", "lazy", "dog." };
var phrase = words.Aggregate((partialPhrase, word) =>$"{partialPhrase} {word}");
System.Console.WriteLine(phrase);
Opsi ini dapat menyebabkan lebih banyak alokasi daripada metode lain untuk menggabungkan koleksi, karena menciptakan string perantara untuk setiap iterasi. Jika mengoptimalkan performa sangat penting, pertimbangkan StringBuilder
kelas atau String.Concat
metode atau String.Join
untuk menggabungkan koleksi, bukan Enumerable.Aggregate
.