C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

Re[3]: 配列の並び替え


(過去ログ 76 を表示中)

[トピック内 5 記事 (1 - 5 表示)]  << 0 >>

■44857 / inTopicNo.1)  配列の並び替え
  
□投稿者/ 初心者 (97回)-(2009/12/22(Tue) 11:09:55)

分類:[C#] 


Visual Studio 2008 C#を使用しています。

配列のソート方法の質問です

「1_1.txt」
「1_2.txt」
  ・
  ・
  ・
「1_10.txt」
「1_11.txt」
と表示したいのですが、

「1_1.txt」
「1_10.txt」
「1_11.txt」
「1_2.txt」
  ・
  ・
  ・
のようになってしまいます。

取得方法は「System.IO.Directory.GetFiles」で行っています。

どのように行えばよいのかご教授願います。
よろしくお願いします。
引用返信 編集キー/
■44860 / inTopicNo.2)  Re[1]: 配列の並び替え
□投稿者/ επιστημη (2330回)-(2009/12/22(Tue) 11:42:53)
επιστημη さんの Web サイト
↓ たとえばこんなの?

using System;

namespace ConsoleApplication6
{
    class Program
    {
        static void Main(string[] args)
        {
            string[] data = { "1_1.txt", "1_10.txt", "1_11.txt", "1_2.txt" };

            Array.Sort(data, (string x, string y) =>
            {
                // 文字長が短い方が小さい、文字長が同じならふつーに比較
                int t = x.Length.CompareTo(y.Length);
                return t != 0 ? t : x.CompareTo(y);
            });

            foreach (string item in data)
            {
                Console.WriteLine(item);
            }
            Console.ReadLine();
        }
    }
}

引用返信 編集キー/
■44861 / inTopicNo.3)  Re[1]: 配列の並び替え
□投稿者/ こくぶん (34回)-(2009/12/22(Tue) 12:04:03)
No44857 (初心者 さん) に返信
Explorer と同じソートをご希望なのであれば、 StrCmpLogicalW を使うのがよいかと思います。
http://blogs.wankuma.com/wm/archive/2008/07/08/147869.aspx

引用返信 編集キー/
■44863 / inTopicNo.4)  Re[2]: 配列の並び替え
□投稿者/ επιστημη (2331回)-(2009/12/22(Tue) 12:18:38)
επιστημη さんの Web サイト
↑ わんだほー。

using System;

namespace ConsoleApplication6
{
    class Program
    {
        [System.Runtime.InteropServices.DllImport(
          "shlwapi.dll",
          CharSet = System.Runtime.InteropServices.CharSet.Unicode,
          ExactSpelling = true)]
        public static extern int StrCmpLogicalW(string x, string y); 

        static void Main(string[] args)
        {
            string[] data = { "1_1.txt", "1_10.txt", "1_11.txt", "1_2.txt" };
            Array.Sort(data, StrCmpLogicalW);
            Array.ForEach(data, Console.WriteLine);
            Console.ReadLine();
        }
    }
}

引用返信 編集キー/
■44869 / inTopicNo.5)  Re[3]: 配列の並び替え
□投稿者/ 初心者 (98回)-(2009/12/22(Tue) 15:19:17)
επιστημη さん
こくぶん さん

ありがとうございます。

すばり行いたかったことです。
大変参考になりました。
解決済み
引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -