0

我正在尝试从网页中提取源代码并将其保存到文本文件中。但是,我想保留源代码的格式。

我的代码如下。

// this block fetches the source code from the URL entered.
        private void buttonFetch_Click(object sender, EventArgs e)
        {
            using (WebClient webClient = new WebClient())
            {
                string s = webClient.DownloadString("http://www.ebay.com");

                Clipboard.SetText(s, TextDataFormat.Text);

                string[] lines = { s };
                System.IO.File.WriteAllLines(@"C:\Users\user\Dropbox\Personal Projects\WriteLines.txt", lines);

                MessageBox.Show(s.ToString(), "Source code",
                MessageBoxButtons.OKCancel, MessageBoxIcon.Asterisk);
            }
        }

我希望文本文件显示在消息框中格式化的源代码。

消息框截图: 在此处输入图像描述

文本文件截图: 在此处输入图像描述

我将如何让文本文档的格式与消息框中的格式相同?

4

3 回答 3

2

我同意评论,但我只会添加一个注释。如果你在 Notepad++ 中打开它,N++ 会检测到行尾并为你很好地显示文件。在 Notepad++ 中,您可以进入菜单并将行尾更改为 Windows。如果您然后重新保存它并在记事本中打开它,它将看起来正确。问题是基本记事本不理解不同的行尾。

希望能帮助到你。

于 2013-08-23T19:05:46.700 回答
1

问题是您正在下载的字符串只有 LF 行尾。Windows 标准是 CRLF 行尾。众所周知,Windows 记事本支持CRLF 行尾。包括 Visual Studio 在内的其他编辑器可以正确处理仅 LF 版本。

您可以轻松地将文本转换为 CRLF 行尾:

string s = webClient.DownloadString("http://www.ebay.com");
string fixedString = s.Replace("\n", "\r\n");
System.IO.File.WriteAllText("filename", fixedString);
MessageBox.Show(fixedString, "Source code",
            MessageBoxButtons.OKCancel, MessageBoxIcon.Asterisk);

另请注意,不必调用ToString字符串。

于 2013-08-23T20:09:46.950 回答
0

尝试这个:

string[] lines = s.Split('\n');
System.IO.File.WriteAllLines(@"C:\Users\user\Dropbox\Personal Projects\WriteLines.txt", lines);
于 2013-08-23T19:35:02.870 回答