문자열을 한 줄로 List <string>으로 변환 하시겠습니까?


101

문자열이 있습니다.

var names = "Brian,Joe,Chris";

이것을 한 줄로 List<string>구분 기호 로 변환하는 방법이 ,있습니까?


15
"한 줄로"요구 사항을 이해하지 못합니다. 작업을 가능한 한 작은 공간에 맞추는 방법이 아니라 명확하고 이해하기 쉬운 코드를 작성하십시오.
Ed S.

6
LINQ의 출현으로 C # IMO에서는 읽기 쉽고 깔끔한 "하나의 라이너"가 훨씬 더 보편화되었습니다.
Matt Greer

5
@Ed S.- "한 줄로"가 표현하는 가장 좋은 방법이 아닐 수 있다는 데 동의하지만 Matt Greer가 제공하는 것과 같은 한 줄 문장은 매우 명확하고 이해하기 쉬운 경향이 있습니다. 내 생각 엔 그는 for더 지루하고 오류가 발생하기 쉬우 며 명확하지 않은 루프를 사용하지 않기를 원할뿐입니다 .
StriplingWarrior

4
나는 한 줄짜리가 본질적으로 이해하기 어렵다고 말하는 것이 아니라 요구 사항이되어서는 안된다는 것입니다. 가능한 최선의 방법을 사용하십시오. 그것이 한 줄에 있으면 좋지만 코드 작성 방식을 결정하는 것은 아닙니다.
Ed S.

답변:


197
List<string> result = names.Split(new char[] { ',' }).ToList();

또는 Dan의 제안으로 더 깨끗하게 :

List<string> result = names.Split(',').ToList();

11
일부러 거기에 넣었을 수도 있지만 항상 전체 new char[] { }부분을 생략합니다 . 적어도 나에게는 그런 식으로 더 읽기 쉽습니다 .
Dan Tao

4
@Dan : 동의하며 일반적으로 params 오버로드를 사용합니다. 그러나 질문에 대한 답변을 위해 때때로 나는 장황함이 더 낫다고 느낍니다. 정말로 의견의 문제입니다.
Matt Greer

2
ToList ()가 더 이상 유용하지 않은 것 같습니다.
Gina Marano 2013-07-23

10
System.LINQ네임 스페이스 를 가져 왔나요?
Matt Greer

42

List<T>받아들이는 생성자가 IEnumerable<T>:

List<string> listOfNames = new List<string>(names.Split(','));

우수 -을 System.Linq를 가져올 필요가 없습니다
VictorySaber

3

소스 문자열이 비어있는 경우 빈 항목이있는 단일 항목 목록을 방지하기 때문에 이것을 선호합니다.

  IEnumerable<string> namesList = 
      !string.isNullOrEmpty(names) ? names.Split(',') : Enumerable.Empty<string>();


1
string given="Welcome To Programming";
List<string> listItem= given.Split(' ').ToList();//Split according to space in the string and added into the list

산출:

Welcome

To 

Programming

0

이미 목록을 가지고와 구분 된 문자열 값을 추가하려는 경우, 당신은 사용할 수 있습니다 AddRange또는 InsertRange. 예를 들면 :

existingList.AddRange(names.Split(','));

0

Stringify.Library 너겟 패키지 사용

//Default delimiter is ,
var split = new StringConverter().ConvertTo<List<string>>(names);

//You can also have your custom delimiter for e.g. ;
var split = new StringConverter().ConvertTo<List<string>>(names, new ConverterOptions { Delimiter = ';' });
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.