chuyển mảng chuỗi thành chuỗi


154

Tôi muốn chuyển đổi một chuỗi chuỗi thành một chuỗi.

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

Tôi muốn có một cái gì đó như "Xin chào thế giới!"

Câu trả lời:


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

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

string.Join("", test);

3
+1 - Tôi đã xóa khoảng trắng trong Tham gia để thực hiện điều này chính xác, như được chỉ ra bởi @davidg
jmort253

Cảm ơn. Tôi đã không chú ý đến dấu cách, mặc dù tôi đã sao chép nó ngay vào câu trả lời của mình.
Dave Ward

2
Tôi cũng cần đặt một dải phân cách ở giữa các chuỗi của tôi (hôn mê và không gian) vì vậy tôi đã sử dụng: var separator = ", "; string.Join(separator , test);
drpawelo

5
Câu trả lời chính xác. Mặc dù, tôi sẽ đề nghị sử dụng string.Join(string.Empty, test)hơn là sử dụng một empty-paranthesis.
bây giờ người không được nêu tên.

36

Một tùy chọn nhanh hơn một chút so với việc sử dụng phương thức đã được đề cập là Join()phương thức Concat () . Nó không yêu cầu một tham số dấu phân cách trống như Join()vậy. Thí dụ:

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

string result = String.Concat(test);

do đó nó có khả năng nhanh hơn.


1
Concatlà tốt hơn, trong mã bên trong Join, nó sẽ nối dấu phân cách sau mỗi mục. Nhưng Concatkhông có mã như vậy, nó đơn giản và trực tiếp hơn Join. Đây là câu trả lời thích hợp.
Squirrel.Downy

22

Thử:

String.Join("", test);

sẽ trả về một chuỗi nối hai phần tử lại với nhau. ""chỉ ra rằng bạn muốn các chuỗi được nối với nhau mà không có bất kỳ dấu phân cách nào.


Điều đó sẽ không làm "HelloWorld!" không có khoảng cách giữa các từ?
jmort253

1
@ jmort253 - Chuỗi gốc "Hello "trong câu hỏi đã có dấu cách. Nếu không có chỗ trống ở đó, thì bạn sẽ chính xác và sử dụng " "như một dấu phân cách sẽ có ý nghĩa hơn.
davidg

19

Một chuỗi đơn giản.Concat () là những gì bạn cần.

string[] test = new string[2];

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

string result = string.Concat(test);

Nếu bạn cũng cần thêm một seperator (dấu cách, dấu phẩy, v.v.) thì nên sử dụng chuỗi.Join ().

string[] test = new string[2];

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

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

Nếu bạn phải thực hiện điều này trên một mảng chuỗi với vô số phần tử so với chuỗi.Join () thì tốt hơn bằng cách thực hiện quan điểm. Chỉ cần đưa ra một đối số "" (trống) là seperator. StringBuilder cũng có thể được sử dụng vì mục đích hiệu năng, nhưng nó sẽ làm cho mã dài hơn một chút.


ConcatJoinnhanh hơn StringBuildernếu bạn có 4 chuỗi hoặc ít hơn để nối.
Chất xúc tác chất lượng

3

Aggregate cũng có thể được sử dụng cho cùng.

string[] test = new string[2];
test[0] = "Hello ";
test[1] = "World!";
string joinedString = test.Aggregate((prev, current) => prev + " " + current);

1
Đây là phương pháp cực kỳ lãng phí để thực hiện String.Joindo nhiều chuỗi bổ sung được xây dựng. Vui lòng đọc stackoverflow.com/questions/217805/ cấp để biết biến thể phù hợp của 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
Đây chỉ là thực hiện thủ công string.Join(" ", array)(ngoại trừ của bạn thêm một không gian dấu). Tại sao không chỉ sử dụng một trong thư viện?
davidg

1
@davidg - Ashwini có lẽ là mới. Học cách sử dụng các công cụ hiện có và vượt qua tâm lý "Tôi phải tự làm điều đó" khi học đại học cần một số quen thuộc. Nó đã làm cho tôi. Cuối cùng, mọi người tự hỏi tại sao đồng nghiệp của họ có thể mã vòng tròn xung quanh họ, và sau đó họ thấy giá trị trong các thư viện mã và tái sử dụng.
jmort253

bất cứ điều gì tôi nhớ tôi đã cố gắng giúp tất cả mọi người..nếu mọi người có giải pháp tốt hơn, bạn luôn được tự do đăng nó .. @jmort: đã 4 năm kể từ khi tôi làm việc ... tôi không có tâm lý của ai Bạn đang nói chuyện abt ... bất cứ ai cũng không hoàn hảo ... qua nhiều năm kinh nghiệm bạn học được .. hy vọng bạn không phủ nhận thực tế này ..
lập trình viên

@Ashwini - Không cố gắng xúc phạm bạn. Chỉ cần trả lời câu hỏi của @ davidg dựa trên kinh nghiệm của tôi khi làm việc với các kỹ sư khác nhau.
jmort253

2
Ngoài ra, chuỗi nối sẽ có thêm một khoảng trống được xử lý ở phần cuối của chuỗi. Vì vậy, điều này không đáp ứng đầy đủ câu hỏi.
jmort253

0

Tôi đã sử dụng cách này để làm cho dự án của tôi nhanh hơn:

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

return text;

RichTextBox.Text sẽ tự động chuyển đổi mảng của bạn thành một chuỗi nhiều dòng!


-1

Trong câu trả lời được chấp nhận, String.Join không phải là cách thực hành tốt nhất cho mỗi lần sử dụng. String.Concat nên được sử dụng vì OP đã bao gồm một khoảng trắng ở mục đầu tiên: "Xin chào" (thay vì sử dụng dấu phân cách null).

Tuy nhiên, vì OP đã yêu cầu kết quả "Hello World!", String.Join vẫn là phương thức thích hợp, nhưng thay vào đó, khoảng trắng theo sau nên được chuyển sang dấu phân cách.

// 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

Như thế này:

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

Bạn cũng có thể sử dụng một vòng lặp:

for(int i=0; i<2; i++)
    str += test[i];
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.