-1

これは、html ファイルから URL を抽出するために使用するコードです。

private void test(string firstTag, string lastTag, string f)
        {
            List<string> imagesUrls = new List<string>();
            int startIndex = 0;
            int endIndex = 0;
            int position = 0;

            string startTag = firstTag;//"http://www.niederschlagsradar.de/images.aspx";
            string endTag = lastTag;//"cultuur=en-GB&continent=europa";

            startIndex = f.IndexOf(startTag);

            while (startIndex > 0)
            {

                endIndex = f.IndexOf(endTag,startIndex);
                if (endIndex == -1)
                {
                    break;
                }
                string t = f.Substring(startIndex, endIndex - startIndex + endTag.Length);
                imagesUrls.Add(t);
                position = endIndex + endTag.Length;
                startIndex = f.IndexOf(startTag,position);
            }
            string item = imagesUrls[imagesUrls.Count - 1];
            imagesUrls.Remove(item);
            for (int i = 0; i < imagesUrls.Count; i++)
            {
                if (f == satelliteMapToRead)
                {
                    imagesUrls[i] = stringForSatelliteMapUrls + imagesUrls[i];
                }
                using (WebClient client = new WebClient())
                {
                    client.DownloadFile(imagesUrls[i], UrlsPath + "Image" + counter.ToString("D6"));
                }
                counter++;
            }
            List<string> files = Directory.GetFiles(UrlsPath).ToList();
            uf.MakeGIF(files, localFilename + "weather", 80, true);
        }

変数 f は、すべてのテキストを読み取る html ファイルです。この html ファイルの List imagesUrls には 9 つの項目が含まれています。

リストの最初の項目は次のとおりです。

http://www.sat24.com/image2.ashx?region=eu&time=201309172215&ir=true

リストの 2 番目の項目は次のとおりです。

http://www.sat24.com/image2.ashx?region=eu&time=201309172200&ir=true

最初の URL の日付と時刻は次のとおりです: 2013 09 17 22 15 日付は 2013 09 17 で、時刻は 22:15 です。

2 番目の項目の日付と時刻は次のとおりです。そして、これはhtmlファイルの順序です。

リストが9つのアイテムでいっぱいになった後、リストのimagesUrlsでそれを変更して、最初のものから最後のものになるようにするにはどうすればよいですか?

編集**

これは私がしました:

if (f == satelliteMapToRead)
            {
                sortedList =
                imagesUrls
                .OrderBy(s =>
                DateTime.ParseExact(
                System.Web.HttpUtility.ParseQueryString(s).Get("time"),
                "yyyyMMddHHmm",
                System.Globalization.CultureInfo.InvariantCulture));
                for (int i = 0; i < sortedList.Count(); i++)
                {
                    if (f == satelliteMapToRead)
                    {
                        imagesUrls[i] = stringForSatelliteMapUrls + imagesUrls[i];
                    }
                    using (WebClient client = new WebClient())
                    {
                        client.DownloadFile(imagesUrls[i], UrlsPath + "Image" + counter.ToString("D6"));
                    }
                    counter++;
                }
            }

しかし、リストを並べ替えた後、imagesUrlsリストの代わりに並べ替えられたリストを使用する必要がありますが、imagesUrlsがListであるため、それらは同じではありません

では、コードのこの部分で sortedList を imagesUrls List に置き換えるにはどうすればよいでしょうか。

4

1 に答える 1

1

次のような URI のリストがある場合:

var list = new List<String>()
{
    "http://www.sat24.com/image2.ashx?region=eu&time=201309172215&ir=true",
    "http://www.sat24.com/image2.ashx?region=eu&time=201309172200&ir=true",
};

クエリ文字列を解析してから、解析time引数を a の一部として解析し、それを LinqDateTimeの an の一部として使用できます。OrderBy

var sortedList = 
list
.OrderBy(
    s =>
        DateTime.ParseExact(
            System.Web.HttpUtility.ParseQueryString(s).Get("time"),
            "yyyyMMddHHmm",
            System.Globalization.CultureInfo.InvariantCulture));
于 2013-09-17T22:42:17.920 に答える