0
在我的程序的HTML報告我有一個包含/ N(每行一個)如何從一個字符串的URL
分離網址:假設字符串被稱爲「鏈接」的字符串。我想採用這個字符串並生成一個HTML文件,該文件將在默認瀏覽器中自動打開,這會使每個URL成爲一個超鏈接(每行一個)。我如何使用WPF C#4.0不使用任何第三方組件來製作這樣的報告?我想通過點擊一個名爲「導出」的按鈕來生成報告。
在我的程序的HTML報告我有一個包含/ N(每行一個)如何從一個字符串的URL
分離網址:假設字符串被稱爲「鏈接」的字符串。我想採用這個字符串並生成一個HTML文件,該文件將在默認瀏覽器中自動打開,這會使每個URL成爲一個超鏈接(每行一個)。我如何使用WPF C#4.0不使用任何第三方組件來製作這樣的報告?我想通過點擊一個名爲「導出」的按鈕來生成報告。
有很多方法可以做到這一點,但這裏是一個快速和骯髒的例子(調試可能是必要的,因爲我寫了這對飛)。 [編輯:現在使用的Uri對象制定的實際地址]
private void export_Click(object sender, RoutedEventArgs e)
{
string tempFileName = "list.html";
string links = "http://www.google.com/#sclient=psy&hl=en&site=&source=hp&q=test+me&aq=f&aqi=&aql=&oq=&gs_rfai=&pbx=1&fp=ddfbf15c2e2f4021\nhttp://www.testme.com/Test-Prep.html?afdt=Q3RzePF0jU8KEwja-5WM7PqkAhUUiZ0KHaoG_wcYASAAMJbwoAM4MEC4w6uX7dS53gdQlvCgA1CEra8PUJzr_xNQg73wFVCKttweUJStzNoBUNv67ZsD";
List<Uri> uriCollection = new List<Uri>();
foreach (string url in links.Split(new char[] { '\n' }, StringSplitOptions.RemoveEmptyEntries))
{
uriCollection.Add(new Uri(url));
}
// Create temporary file.
using (TextWriter writer = new StreamWriter(tempFileName))
{
try
{
writer.WriteLine("<html>");
writer.WriteLine("<head><title>Links</title></head>");
writer.WriteLine("<body>");
writer.WriteLine("<p>");
foreach (Uri uri in uriCollection)
{
writer.WriteLine("<a href=\"{0}\">{1}</a><br />", uri.OriginalString, uri.Host);
}
writer.WriteLine("</p>");
writer.WriteLine("</body>");
writer.WriteLine("</html>");
}
catch (Exception ex)
{
System.Diagnostics.Trace.TraceError(ex.Message);
}
finally
{
writer.Close();
}
}
// Open browser with temporary file.
if (File.Exists(tempFileName))
{
System.Diagnostics.Process.Start(tempFileName);
}
}
「導出」按鈕連接到事件「export_Click」。例如,我用'\ n'對字符串進行了硬編碼。只需使用拆分將這些分開,然後編寫一個臨時文件來創建您需要的HTML。然後,一旦文件完成,您可以使用Process.Start()方法打開它。
理想的情況下這可以通過使用數據綁定和WPF中可用的其它元素如果沒有需要打開一個瀏覽器窗口的需要來完成。這也將消除程序可能具有的任何外部依賴性。
謝謝!這工作完美!最後一個問題。要從網址中刪除一些重複數據,將添加什麼代碼?例如,如果我將「+ sales + degree」作爲結尾部分網址的一部分,但我想只刪除該字符串? – Jason 2010-10-30 13:07:23
已編輯的代碼來反映您的問題。我繼續前進,假設你有像示例一樣的整個字符串,所以創建一個Uri對象將是相當安全的。 – 2010-10-30 15:09:09