2016-09-25 12 views
-1

문자열 mypath = txtPath.Text;모든 파일을 이름순으로 배열 순서대로 가져 오기 C#

DirectoryInfo d = new DirectoryInfo(mypath); 

foreach (FileInfo fi in d.EnumerateFiles("*.jpg").OrderBy(x => x.Name)) 
      txtStatus.Text = txtStatus.Text + fi.Name + Environment.NewLine; 

내가지고있어 이것의 결과는이

내가 가야
banner-noche-estrellas-zacatecas2015.jpg 
banner-noche-estrellas-zacatecas2015_10.jpg 
banner-noche-estrellas-zacatecas2015_11.jpg 
banner-noche-estrellas-zacatecas2015_12.jpg 
banner-noche-estrellas-zacatecas2015_13.jpg 
banner-noche-estrellas-zacatecas2015_14.jpg 
banner-noche-estrellas-zacatecas2015_15.jpg 
banner-noche-estrellas-zacatecas2015_16.jpg 
banner-noche-estrellas-zacatecas2015_17.jpg 
banner-noche-estrellas-zacatecas2015_18.jpg 
banner-noche-estrellas-zacatecas2015_19.jpg 
banner-noche-estrellas-zacatecas2015_2.jpg 
banner-noche-estrellas-zacatecas2015_20.jpg 
banner-noche-estrellas-zacatecas2015_21.jpg 

이 :

banner-noche-estrellas-zacatecas2015.jpg 
banner-noche-estrellas-zacatecas2015_2.jpg 
banner-noche-estrellas-zacatecas2015_3.jpg 

+0

"자연 정렬"이라고하며 이전 질문에 대한 대답에서 설명한대로 간단한 정렬보다 훨씬 복잡합니다. [이 질문/답변] (http://stackoverflow.com/questions/248603/natural-sort-order-in-c-sharp)에서 유용한 것을 찾을 수 있습니다. – Steve

답변

0

에 당신이 그들을 점점을 순서대로. 문제는 문자열이므로 문자열 순서로 가져 오는 것입니다.

가장 간단한 해결 방법은 파일의 이름을 바꾸어 동일한 자릿수를 갖도록하는 것입니다. banner-noche-estrellas-zacatecas2015_2.jpg ->banner-noche-estrellas-zacatecas2015_02.jpg

이렇게하면 방법이 효과적입니다.

그렇게하고 싶지 않으면 정렬을 호출하기 전에 해당 숫자를 int로 구문 분석해야합니다. 그것을하기 위해 정규식을 사용하십시오.

+1

실제로, 정규식은 아마도 과잉입니다. 'var-sortOrder = int.Parse ("0"+ fi.Name.Replace ("배너 -noche-estrellas-zacatecas2015", "") .Replace ("_", ") .Replace (fi.Extension," "); –