簡體   English   中英

最有效的解析分隔成html表的方法c#

[英]Most efficient way to parse delimited into html table c#

我有以下帶分隔的分隔字符串:

1,5|2,5|3,5

我想創建一個表如下:

< table>
     < tr>< td>1< /td>< td>5< /td>< /tr>
     < tr>< td>2< /td>< td>5< /td>< /tr>
     < tr>< td>3< /td>< td>5< /td>< /tr>
     < /table>

什么是C#中最有效的方式?

解析字符串(簡單的拆分應該足夠了)我建議使用.NET XML類(或者那里的純粹主義者的Html Agility Pack )來生成表。 可能是過度殺戮而不是手動構建字符串,尤其是對於簡單的數據,但它不那么冗長,以后應該更容易擴展。

使用LINQ to XML:

var str = "1,5|2,5|3,5";
var table =
    new XElement("table",
        str.Split('|')
           .Select(pair =>
               new XElement("tr",
                   pair.Split(',')
                       .Select(num => new XElement("td", num))
               )
           )
    ).ToString();

產生字符串:

<table>
  <tr>
    <td>1</td>
    <td>5</td>
  </tr>
  <tr>
    <td>2</td>
    <td>5</td>
  </tr>
  <tr>
    <td>3</td>
    <td>5</td>
  </tr>
</table>

版本1:直接前進

String html = "<table>";
Array.ForEach<String>("1,5|2,5|3,5".Split('|'),r =>
{
  html += "<tr>";
  Array.ForEach(r.Split(','),c =>
  {
    html += String.Format("<td>{0}</td>", c);
  });
  html += "</tr>";
});
html += "</table>";

未經測試,但有類似的東西? 我把它拿回來, 經過測試和工作。

版本2,減去代表:

String html = "<table>";
foreach (String r in "1,5|2,5|3,5".Split('|'))
{
  html += "<tr>";
  foreach (String c in r.Split(','))
    html += String.Format("<td>{0}</td>", c);
  html += "</tr>";
}
html += "</table>";

兩個版本都在一個工作演示中。

另一個版本包括StringBuilder

如果你搜索有效的方法,那么你不應該使用字符串concat,而是使用StringBuilder

    private static string ToTable(string input)
    {
        var result = new StringBuilder(input.Length * 2);
        result.AppendLine("<table>");
        foreach (var row in input.Split('|'))
        {
            result.Append("<tr>");
            foreach (var cell in row.Split(','))
                result.AppendFormat("<td>{0}</td>", cell);
            result.AppendLine("/<tr>");
        }
        result.AppendLine("</table>");
        return result.ToString();
    }

如上所述使用后面的代碼中的String.Split方法從集合中創建IList,並使用本機DataList UI Control ,將數據源綁定到控件並將控件的DataSource屬性設置為List。

 <asp:DataList ID="YourDataList" RepeatLayout="Table" RepeatColumns="2" RepeatDirection="Horizontal" runat="server">
     <ItemTemplate>
        <%# Eval("value") %> 
     </ItemTemplate>
 </asp:DataList>

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM