使用StringReader进行C#拆分

时间:2016-01-21 00:43:19

标签: c# string split

我的方法没什么问题。所以首先我从我的硬件加载一个HTML网页。它有点小,但: 以下是来自网络的代码:

<!DOCTYPE html>
<html>
<head>
    <title></title>
	<meta charset="utf-8" />
</head>
<body>
    <p>001;20151006;0000;1800;1000;999;1;</p>
    <p>001;20151006;0100;1300;990;999;1;</p>
    <p>001;20151006;0200;1100;1000;999;1;</p>
    <p>001;20151006;0300;1500;1100;999;1;</p>
    <p>001;20151006;0400;2200;500;999;1;</p>
    <p>001;20151006;0500;1900;100;999;1;</p>
    <p>001;20151006;0600;0700;990;999;1;</p>
    <p>001;20151006;0700;0300;998;999;1;</p>

</body>
</html>

我只需要取体并加载第二和第三行,即yyyyMMdd HH:mm。 所以这是我的代码:

 char[] pommidChar = { ';' };
WebRequest request = WebRequest.Create(
              "http://localhost:49443/Wyniki.html");

        request.Credentials = CredentialCache.DefaultCredentials;

        WebResponse response = request.GetResponse();
       Console.WriteLine(((HttpWebResponse)response).StatusDescription);

        Stream dataStream = response.GetResponseStream();

        StreamReader reader = new StreamReader(dataStream);

        string responseFromServer = reader.ReadToEnd();

        //  Console.WriteLine(responseFromServer);

        HtmlAgilityPack.HtmlDocument doc = new HtmlAgilityPack.HtmlDocument();
        doc.LoadHtml(responseFromServer);
        // Console.WriteLine(doc);



        string formatString = "yyyyMMddHHmm";//201510060000;
        reader.Close();//   = "201510060000"
        response.Close();
        string[] slowa;

        string tekst ;
        foreach (HtmlNode node in doc.DocumentNode.SelectNodes("//body"))
        {

            string temp = "";
            Console.WriteLine(node.InnerText);
            id = node.InnerText;
            tekst = node.InnerText;
            //Console.WriteLine("Node"+node.ToString());
            slowa = id.Split(pommidChar);
            temp = slowa[1] + slowa[2];
            //Console.WriteLine(slowa[30]);
            Console.WriteLine("string pobrany ze strony"+temp);
            DateTime dt = DateTime.ParseExact(temp, formatString, CultureInfo.InvariantCulture,
                                    DateTimeStyles.None);

            Console.WriteLine("Ostatnia dana z parse:" + dataParse1.ToString("yyyy-MM-dd HH:mm"));
            Console.WriteLine("Aktualna pobrana z urzadzenia:" + dt.ToString("yyyy-MM-dd HH:mm"));

} 现在在tekst我有来自//身体的字符串所以我想逐行阅读和copmare日期:

using (StringReader readerr = new StringReader(tekst))
        {
            string[] splitline;
            string line;

            while ((line = readerr.ReadLine()) != null)
            {

               Console.WriteLine(line);

               splitline = line.Split(pommidChar);

              //  Console.WriteLine(splitline[0]);
                Console.WriteLine(splitline[1]);

            }
            readerr.Close();
        }

但是,这是线索。我的“splitstring”只有1个字符串。所以有人可以形容我,其他人在哪里串起来? 这项工作slowa = id.Split(pommidChar);工作和分裂,我想要但我不能逐行阅读。

我通过这个问题,结束了。 现在我对某人有一个更愚蠢的问题。 我的大学博士改变了网络上的代码。现在所有变量(html代码)都设置为1行,这是

<body>
    <pre><br>001;20151006;000034;1800;1000;999;1<br>001;20151006;000035;1800;1000;999;1;<br>001;20151006;000036;1800;1000;999;1;</pre>
</body>

那么,我如何从BR标签中取出字符串。我的解决方案是将它们全部排在一行。我认为for lenght字符串的循环是好的。我错了,因为我不知道我必须得到多少弦。请记住,1“quete”以“001”开头,以“1”结尾。 我尝试将节点作为

HtmlNode node in doc.DocumentNode.SelectNodes("//body/pre/br")

但这不起作用。

1 个答案:

答案 0 :(得分:1)

您需要选择P代码...我希望SelectNodes("//p")SelectNodes("//body/p")之类的内容,而不是选择单个body元素(这将作为内部text包含P标签内所有字符串的串联。)