문자열 배열을 문자열로 변환


155

문자열 배열을 단일 문자열로 변환하고 싶습니다.

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

"Hello World!"와 같은 것을 갖고 싶습니다.

답변:


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

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

string.Join("", test);

3
+1-@davidg
jmort253

감사. 복사하여 내 답변에 붙여 넣은 경우에도 후행 공백을 알지 못했습니다.
Dave Ward

2
또한 문자열 (코마와 공백) 사이에 구분 기호를 넣어야하므로 다음을 사용했습니다. var separator = ", "; string.Join(separator , test);
drpawelo

5
좋은 대답입니다. 그러나을 사용하는 string.Join(string.Empty, test)대신 사용하는 것이 좋습니다 empty-paranthesis.
이제 이름을 지어야하는 사람.

37

이미 언급 한 방법을 사용하는 것보다 약간 빠른 옵션 Join()Concat () 방법입니다. 빈 구분 기호 매개 변수가 Join()필요하지 않습니다. 예:

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

string result = String.Concat(test);

따라서 더 빠를 것입니다.


1
Concat내부 코드에서 Join각 항목 뒤에 구분 기호를 추가하는 것이 좋습니다 . 그러나 Concat그러한 코드를 가지고 있지 않다면,보다 간단하고 직접적 Join입니다. 이것이 가장 적합한 답변입니다.
다람쥐. Downy

22

시험:

String.Join("", test);

두 요소를 결합하는 문자열을 반환해야합니다. ""구분 기호없이 문자열을 결합하려는 것을 나타냅니다.


"HelloWorld!" 단어 사이에 공백이 없습니까?
jmort253

1
@ jmort253- "Hello "질문 의 원래 문자열 에는 이미 후행 공백이 있습니다. 공간이 없으면 정확 " "하고 구분 기호로 사용 하는 것이 더 합리적입니다.
davidg

19

간단한 string.Concat ()이 필요합니다.

string[] test = new string[2];

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

string result = string.Concat(test);

구분 기호 (공백, 쉼표 등)도 추가해야하는 경우 string.Join ()을 사용해야합니다.

string[] test = new string[2];

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

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

string.Join ()보다 요소가 많은 문자열 배열 에서이 작업을 수행 해야하는 경우 성능 관점에서 더 좋습니다. ""(공백) 인수를 구분자로 제공하십시오. StringBuilder는 성능 향상을 위해 사용할 수도 있지만 코드를 조금 더 길게 만듭니다.


Concat그리고 Join빨리보다 StringBuilder당신이 연결하는 4 개 이하의 문자열이있는 경우.
품질 촉매

3

Aggregate 같은 용도로도 사용할 수 있습니다.

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

1
이것은 String.Join여러 개의 추가 문자열이 구성 되어 구현하는 데 매우 낭비되는 방법 입니다. 의 적절한 변형에 대해서는 stackoverflow.com/questions/217805/… 를 읽으십시오 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
이것은 수동으로 구현하는 것입니다 string.Join(" ", array)(단, 후행 공백을 추가하는 것을 제외하고). 왜 도서관에서 하나만 사용하지 않습니까?
davidg

1
@davidg-Ashwini는 아마도 새로운 것입니다. 기존 도구를 사용하는 법을 배우고 대학의 "직접해야한다"라는 사고 방식을 극복하려면 익숙해 져야합니다. 그것은 나를 위해했다. 결국 사람들은 동료들이 왜 자신의 주위에 원을 코딩 할 수 있는지 궁금해하고 코드 라이브러리에서 그 가치를보고 재사용합니다.
jmort253

내가 기억하는 모든 것은 그게 다 도움이 되려고 노력했다.. 누군가 더 나은 솔루션을 가지고 있다면 언제든지 무료로 게시 할 수있다. ABT ... 누구 하시다면 이야기가 완벽하지 않습니다 ... 경험의 년 동안 당신은 ..hope 내용 u는이 사실을 부정하지 않습니다 ..
프로그래머

@Ashwini-당신을 화나게하려고하지 않았습니다. 다른 엔지니어들과 함께 일한 경험을 바탕으로 @davidg의 질문에 대답하십시오.
jmort253

2
또한 연결된 문자열에는 끝에 추가 공간이 고정됩니다. 따라서 이것은 완전히 문제를 충족시키지 못합니다.
jmort253

0

이 방법으로 프로젝트를 더 빠르게 만들었습니다.

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

return text;

RichTextBox.Text는 배열을 여러 줄 문자열로 자동 변환합니다!


-1

허용되는 답변에서 String.Join은 사용법마다 모범 사례가 아닙니다. OP가 첫 번째 항목에 후행 공백을 포함 했으므로 String.Concat을 사용해야합니다 (널 구분 기호 대신).

그러나 OP에서 "Hello World!"결과를 요청 했으므로 String.Join이 여전히 적절한 방법이지만 후행 공백은 구분 기호로 이동해야합니다.

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

이처럼 :

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

루프를 사용할 수도 있습니다.

for(int i=0; i<2; i++)
    str += test[i];
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.