Menggabungkan string di C#

Tip

Artikel ini adalah bagian dari bagian Dasar-Dasar untuk pengembang yang sudah mengetahui setidaknya satu bahasa pemrograman dan mempelajari C#. Jika Anda baru menggunakan pemrograman, mulailah dengan tutorial Memulai terlebih dahulu.

Berasal dari bahasa lain? Penggabungan C# dengan + mirip dengan Java dan JavaScript. C# memperkenalkan interpolasi string ($"{x}"), mirip dengan template literal JavaScript dan f-string Python, sebagai cara yang diutamakan untuk membuat string dari variabel. Untuk membangun string dalam perulangan, C# menawarkan StringBuilder, seperti JavaStringBuilder.

Konkatenasi menambahkan satu string ke akhir string lain untuk menghasilkan string baru. C# menawarkan beberapa cara untuk menggabungkan string, dan pilihan terbaik bergantung pada apakah Anda menggabungkan sekumpulan nilai yang tetap atau sebuah koleksi, atau menyusun string sepotong demi sepotong di dalam perulangan.

Menggabungkan literal string

Ketika Anda menggabungkan literal string atau konstanta dengan +, pengkompilasi menggabungkannya pada waktu kompilasi. Memisahkan literal yang panjang ke beberapa baris meningkatkan keterbacaan dalam kode sumber tanpa biaya saat dijalankan:

// The compiler joins adjacent string literals at compile time,
// so splitting a long literal across lines has no run-time cost.
string message =
    "This is the first sentence of a longer message. " +
    "This is the second sentence. " +
    "This is the third and final sentence.";

Console.WriteLine(message);
// => This is the first sentence of a longer message. This is the second sentence. This is the third and final sentence.

Gunakan operator + dan +=

Untuk menggabungkan variabel string, gunakan + operator untuk menghasilkan string baru, atau += untuk menambahkan ke yang sudah ada. Operator + intuitif, dan pengkompilasi menyalin konten string hanya sekali bahkan ketika Anda menautkan beberapa operator dalam satu ekspresi:

string name = "Alex";
string day = "Monday";

// Use + to build a string from variables and literals.
string greeting = "Hello " + name + ". Today is " + day + ".";
Console.WriteLine(greeting);
// => Hello Alex. Today is Monday.

// Use += to append to an existing string.
greeting += " How are you today?";
Console.WriteLine(greeting);
// => Hello Alex. Today is Monday. How are you today?

Note

Dalam perangkaian string, C# memperlakukan null string yang sama dengan string kosong, sehingga menggabungkan null tidak menambahkan apa pun ke hasilnya.

Gunakan interpolasi string

Untuk menyematkan ekspresi yang dihitung dalam string, sebaiknya gunakan interpolasi string daripada placeholder posisional seperti token {0} dan {1} yang diwarisi String.Format dari pemformatan bergaya C. Interpolasi menempatkan setiap ekspresi sebaris tempat nilainya muncul, sehingga string hasil tetap dapat dibaca dan Anda tidak dapat salah menyelaraskan argumen:

string name = "Alex";
string day = "Monday";

// String interpolation reads better than a chain of + operators.
string greeting = $"Hello {name}. Today is {day}.";
Console.WriteLine(greeting);
// => Hello Alex. Today is Monday.

Ketika setiap ekspresi terinterpolasi itu sendiri adalah string konstanta, Anda dapat menetapkan hasil terinterpolasi ke const string.

Gabungkan sekumpulan string

Untuk menggabungkan elemen koleksi, gunakan String.Concat untuk menggabungkannya tanpa pemisah, atau String.Join untuk menempatkan pemisah di antara setiap elemen:

string[] words = ["The", "quick", "brown", "fox"];

// Concat joins the sequence with no separator.
string runTogether = string.Concat(words);
Console.WriteLine(runTogether);
// => Thequickbrownfox

// Join places a separator between each element.
string sentence = string.Join(' ', words);
Console.WriteLine(sentence);
// => The quick brown fox

string.Join adalah alat yang tepat setiap kali Anda memerlukan output yang dibatasi, seperti nilai yang dipisahkan koma atau kata yang dipisahkan spasi.

Membuat string dalam perulangan

Setiap + operasi atau += membuat string baru, karena string tidak dapat diubah. Ketika Anda menambahkan banyak bagian dalam sebuah perulangan, alokasi tersebut akan terakumulasi. Kelas StringBuilder membuat hasil dalam satu buffer sebagai gantinya:

// StringBuilder builds a string in place, which suits loops
// that append many pieces.
var builder = new StringBuilder();
for (int i = 1; i <= 3; i++)
{
    builder.AppendLine($"Line {i}");
}

Console.Write(builder.ToString());
// => Line 1
// => Line 2
// => Line 3

Gunakan StringBuilder saat jumlah elemen besar atau tidak diketahui saat kompilasi. Untuk sekumpulan nilai tetap dan kecil, + operator dan interpolasi string lebih jelas. Untuk panduan tentang kapan setiap pendekatan berkinerja terbaik, lihat Jenis string dan StringBuilder.

Baca juga