C # 구문-문자열을 쉼표로 배열로 분할, 일반 목록으로 변환 및 역순
이것에 대한 올바른 구문은 무엇입니까?
IList<string> names = "Tom,Scott,Bob".Split(',').ToList<string>().Reverse();
내가 뭘 망 쳤어? TSource는 무엇을 의미합니까?
문제는 당신이 전화하고 있다는 것입니다 List<T>.Reverse()
있는 반환 void
.
다음 중 하나를 수행 할 수 있습니다.
List<string> names = "Tom,Scott,Bob".Split(',').ToList<string>();
names.Reverse();
또는:
IList<string> names = "Tom,Scott,Bob".Split(',').Reverse().ToList<string>();
후자는 더 많은 비용이 듭니다. 임의의 값 IEnumerable<T>
을 되돌리려면 모든 데이터를 버퍼링 한 다음 모든 데이터를 생성하는 것이 포함되기 때문입니다. 반면에 List<T>
모든 역방향 "인플레 이스"를 수행 할 수 있습니다. (여기서 차이점 Enumerable.Reverse<T>()
은 List<T>.Reverse()
인스턴스 메서드 대신 확장 메서드를 호출한다는 것 입니다.)
더 효율적이지만 다음을 사용할 수 있습니다.
string[] namesArray = "Tom,Scott,Bob".Split(',');
List<string> namesList = new List<string>(namesArray.Length);
namesList.AddRange(namesArray);
namesList.Reverse();
이렇게하면 부적절한 크기의 버퍼가 생성되는 것을 방지 할 수 있습니다. 4 개의 명령문을 사용하는 대신 실제 사용 사례에서 성능 대비 가독성을 비교합니다.
나는이 질문이 꽤 오래되었다는 것을 알고 있지만 내 문자열에 공백이 포함되어 있다는 점을 제외하면 비슷한 문제가 있습니다. 쉼표 이상으로 문자열을 구분하는 방법을 알아야하는 사람들을 위해 :
string str = "Tom, Scott, Bob";
IList<string> names = str.Split(new string[] {","," "},
StringSplitOptions.RemoveEmptyEntries);
StringSplitOptions는 공백 문자 일 뿐인 레코드를 제거합니다.
List<string> names = "Tom,Scott,Bob".Split(',').Reverse().ToList();
이것은 작동합니다.
이 시도:
List<string> names = new List<string>("Tom,Scott,Bob".Split(','));
names.Reverse();
여기서 누락 된 것은 .Reverse ()가 void 메서드라는 것입니다. .Reverse ()의 결과를 변수에 할당 할 수 없습니다. 그러나 Enumerable.Reverse () 사용 순서를 변경하고 결과를 얻을 수 있습니다.
var x = "Tom,Scott,Bob".Split(',').Reverse().ToList<string>()
차이점은 Enumerable.Reverse ()가 void return 대신 IEnumerable <T>를 반환한다는 것입니다.
당신이 시도하는 경우
- 여러 구분 기호 사용
- 빈 문자열 필터링
- 선행 / 후행 공백 자르기
다음이 작동합니다.
string str = "Tom Cruise, Scott, ,Bob | at";
IEnumerable<string> names = str
.Split(new char[]{',', '|'})
.Where(x=>x!=null && x.Trim().Length > 0)
.Select(x=>x.Trim());
산출
- 톰
- 크루즈
- 스콧
- 단발
- ...에서
이제 다른 사람들이 제안한대로 분명히 순서를 바꿀 수 있습니다.
'Programing' 카테고리의 다른 글
비밀번호가 현재 정책 요구 사항을 충족하지 않습니다. (0) | 2020.09.11 |
---|---|
명령 줄에서 Gradle을 통해 장치에 배포 할 수 있습니까? (0) | 2020.09.11 |
JSON ValueError : 예상 속성 이름 : 줄 1 열 2 (문자 1) (0) | 2020.09.11 |
문자열을 반환하는 값에 자바 스크립트 (jquery)로 정수 값을 추가하려면 어떻게해야합니까? (0) | 2020.09.11 |
존재하지 않는 경우 mysql 사용자 생성 (0) | 2020.09.11 |