convert array string menjadi string

155

Saya ingin mengubah array string menjadi string tunggal.

string[] test = new string[2];
test[0] = "Hello ";
test[1] = "World!";

Saya ingin memiliki sesuatu seperti "Hello World!"

John Saunders
sumber

Jawaban:

280
string[] test = new string[2];

test[0] = "Hello ";
test[1] = "World!";

string.Join("", test);
Dave Ward
sumber
3
+1 - Saya menghapus ruang di Gabung untuk memperbaikinya, seperti yang ditunjukkan oleh @davidg
jmort253
Terima kasih. Saya tidak melihat ruang trailing, meskipun saya salin menempelkannya tepat ke jawaban saya.
Dave Ward
2
Saya juga perlu meletakkan pemisah di antara string saya (koma dan ruang) jadi saya menggunakan: var separator = ", "; string.Join(separator , test);
drpawelo
5
Jawaban yang bagus Meskipun, saya akan menyarankan untuk menggunakan string.Join(string.Empty, test)daripada menggunakan empty-paranthesis.
sekarang dia yang tidak boleh disebutkan namanya.
37

Opsi yang sedikit lebih cepat daripada menggunakan penggunaan metode yang telah disebutkan Join()adalah metode Concat () . Itu tidak memerlukan parameter pembatas kosong seperti Join()halnya. Contoh:

string[] test = new string[2];
test[0] = "Hello ";
test[1] = "World!";

string result = String.Concat(test);

karenanya kemungkinan lebih cepat.

Katalisator Berkualitas
sumber
1
Concatlebih baik, dalam kode bagian dalam Join, itu akan menambahkan pemisah setelah setiap item. Tetapi Concattidak memiliki kode seperti itu, lebih sederhana dan lebih langsung daripada Join. Ini adalah jawaban pertama.
Squirrel. Downy
22

Mencoba:

String.Join("", test);

yang harus mengembalikan string yang menyatukan dua elemen. ""menunjukkan bahwa Anda ingin string digabungkan bersama tanpa pemisah apa pun.

davidg
sumber
Bukankah itu membuat "HelloWorld!" tanpa spasi di antara kata-kata?
jmort253
1
@ jmort253 - String asli "Hello "dalam pertanyaan sudah memiliki ruang tambahan. Jika ruang itu belum ada di sana, maka Anda akan benar, dan menggunakan " "sebagai pemisah akan lebih masuk akal.
davidg
19

String.Compat () sederhana adalah yang Anda butuhkan.

string[] test = new string[2];

test[0] = "Hello ";
test[1] = "World!";

string result = string.Concat(test);

Jika Anda juga perlu menambahkan seperator (spasi, koma dll) maka, string.Join () harus digunakan.

string[] test = new string[2];

test[0] = "Red";
test[1] = "Blue";

string result = string.Join(",", test);

Jika Anda harus melakukan ini pada array string dengan elemen hundered daripada string.Join () lebih baik dengan titik kinerja performace. Berikan argumen "" (kosong) sebagai pemisah. StringBuilder juga dapat digunakan untuk kinerja, tetapi akan membuat kode sedikit lebih lama.

ePandit
sumber
Concatdan Joinlebih cepat daripada StringBuilderjika Anda memiliki 4 string atau kurang untuk digabungkan.
Quality Catalyst
3

Aggregate bisa juga digunakan untuk hal yang sama.

string[] test = new string[2];
test[0] = "Hello ";
test[1] = "World!";
string joinedString = test.Aggregate((prev, current) => prev + " " + current);
vivek nuna
sumber
1
Ini adalah metode yang sangat boros untuk diterapkan String.Joinkarena beberapa string ekstra dibangun. Silakan baca stackoverflow.com/questions/217805/… untuk varian yang tepat Aggregate.
Alexei Levenkov
1
    string ConvertStringArrayToString(string[] array)
    {
        //
        // Concatenate all the elements into a StringBuilder.
        //
        StringBuilder strinbuilder = new StringBuilder();
        foreach (string value in array)
        {
            strinbuilder.Append(value);
            strinbuilder.Append(' ');
        }
        return strinbuilder.ToString();
    }
programmer
sumber
3
Ini hanya diterapkan secara manual string.Join(" ", array)(kecuali Anda menambahkan ruang tambahan). Mengapa tidak menggunakan saja yang ada di perpustakaan?
davidg
1
@davidg - Ashwini mungkin baru. Belajar menggunakan alat yang ada dan mengatasi mentalitas "Aku harus melakukannya sendiri" memerlukan waktu untuk membiasakan diri. Itu untuk saya. Akhirnya, orang-orang bertanya-tanya mengapa kolega mereka dapat membuat kode lingkaran di sekitar mereka, dan kemudian mereka melihat nilai dalam pustaka kode dan digunakan kembali.
jmort253
apa pun yang saya ingat saya mencoba untuk membantu itu saja .. jika ada yang punya solusi yang lebih baik Anda selalu bebas mempostingnya .. @ jmort: sudah 4 tahun sejak saya bekerja ... saya tidak memiliki mentalitas wht Anda berbicara abt ... ada orang yang tidak sempurna ... selama bertahun-tahun pengalaman yang Anda pelajari .. tolong jangan menyangkal fakta ini ..
programmer
@ Ashwini - Tidak berusaha menyinggung Anda. Hanya menjawab pertanyaan @ davidg berdasarkan pengalaman saya bekerja dengan insinyur yang berbeda.
jmort253
2
Juga, senar bersambung akan memiliki ruang tambahan yang ditempelkan di ujungnya. Jadi ini tidak sepenuhnya memenuhi pertanyaan.
jmort253
0

Saya menggunakan cara ini untuk membuat proyek saya lebih cepat:

RichTextBox rcbCatalyst = new RichTextBox()
{
    Lines = arrayString
};
string text = rcbCatalyst.Text;
rcbCatalyst.Dispose();

return text;

RichTextBox.Text akan secara otomatis mengubah array Anda menjadi string multiline!

Bamdad
sumber
-1

Dalam jawaban yang diterima, String.Join bukan praktik terbaik per penggunaannya. String.Compat seharusnya digunakan karena OP menyertakan spasi tambahan di item pertama: "Halo" (alih-alih menggunakan pembatas nol).

Namun, karena OP meminta hasil "Hello World!", String.Join masih merupakan metode yang tepat, tetapi spasi spasi tambahan harus dipindahkan ke pembatas sebagai gantinya.

// string[] test = new string[2];

// test[0] = "Hello ";
// test[1] = "World!";

string[] test = { "Hello", "World" }; // Alternative array creation syntax 
string result = String.Join(" ", test);
Sir Charles Facehuggersworth
sumber
-4

Seperti ini:

string str= test[0]+test[1];

Anda juga dapat menggunakan loop:

for(int i=0; i<2; i++)
    str += test[i];
Kanaan
sumber