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!"

Jawaban:


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

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

string.Join("", test);

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.


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.


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.


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);

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();
    }

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!


-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);

-4

Seperti ini:

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

Anda juga dapat menggunakan loop:

for(int i=0; i<2; i++)
    str += test[i];
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.