하나의 문자열에 대한 문자열 목록


206

당신이 있다고 말하자 :

List<string> los = new List<string>();

이 미친 기능 세계에서 우리는 요즘에 살고 있습니다.

String.Join(String.Empty, los.ToArray());

StringBuilder builder = new StringBuilder();
los.ForEach(s => builder.Append(s));

string disp = los.Aggregate<string>((a, b) => a + b);

또는 일반 오래된 StringBuilder foreach

아니면 더 좋은 방법이 있습니까?


9
.Net 4에도 string.Join (string, IEnumerable <string>)이 포함되어 ToArray ()를 건너 뛸 수 있습니다. msdn.microsoft.com/en-us/library/dd783876.aspx
luke

답변:


289

나는 옵션 A와 함께 갈 것입니다 :

String.Join(String.Empty, los.ToArray());

내 이유는 Join 메서드가 해당 목적으로 작성 되었기 때문입니다. 실제로 Reflector를 살펴보면 안전하지 않은 코드가 실제로 최적화하는 데 사용되었음을 알 수 있습니다. 다른 두 가지도 작동하지만 Join 기능 이이 목적으로 작성되었으며 가장 효율적인 것으로 생각합니다. 그래도 잘못 될 수 있습니다 ...

@Nuri YILMAZ가없는 .ToArray().NET 4 이상입니다.

String.Join(String.Empty, los);

GA! 처음에는이 옵션을 보지 못했습니다.
Joel Coehoorn

2
StringBuilder보다 3 배 빠릅니다. 와우, 나는 그것이 더 빠를 것이라고 생각했다. 그래도 의미가 있고, 포인터를 사용하여 안전하지 않은 코드로 수행되므로 .....이 의미가 있습니다.
BFree

8
좋은! 주의 : List <T>는 IEnumarable <T>을 캐스팅 할 수 있으므로 join에는 los.ToArray ()가 필요하지 않습니다.
누리 YILMAZ

8
@ 누리 :이 질문은 .Net 4가 나오기 전에 08 년에 요청되었습니다. IEnumerable <T>을 사용하는 과부하가 .Net 4에 추가되었습니다.
BFree

2
String.Concat과 함께 String.Join은 황금색입니다. 예 : 'String.Concat ( "{", String.Join ( ",", m_Data), "}");'
KornMuffin

51
string.Concat(los.ToArray());

문자열을 연결하려면 string.Join () 대신 string.Concat ()을 사용하십시오.


18

.net 4.0을 사용하는 경우 정렬 방법을 사용할 수 있습니다.

String.Join<string>(String.Empty, los);

10

String.Join ()은 매우 빠르게 구현되며 이미 해당 문자열 모음이 있으므로 아마도 최선의 선택 일 것입니다. 무엇보다도, "문자열 목록에 참여하고 있습니다!" 항상 좋아



5

내 투표는 문자열입니다.

람다 평가 및 임시 함수를 만들 필요가 없으며 함수 호출이 적고 스택 푸시 및 팝이 적습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.