我有一个这样定义的字符串列表
List<String> lstHeaders = new List<string>(new String[]{"str","str1","str2"});
我想要一种方法以特定格式加入所有元素以获得类似的东西
<td>str</td><td>str1</td><td>str2</td>
但是在代码的在线获取这个,就像这样
"<th>"+lstHeaders.functionToGetFormated()+"</th>"
我有一个这样定义的字符串列表
List<String> lstHeaders = new List<string>(new String[]{"str","str1","str2"});
我想要一种方法以特定格式加入所有元素以获得类似的东西
<td>str</td><td>str1</td><td>str2</td>
但是在代码的在线获取这个,就像这样
"<th>"+lstHeaders.functionToGetFormated()+"</th>"
为此编写自己的扩展方法可能更有意义。没有任何内置功能可以完全像那样工作(我知道)。
public static string WrapElementsWithTag(this IEnumerable<string> input, string wrapper)
{
StringBuilder sb = new StringBuilder();
foreach (string s in input)
{
sb.AppendFormat("<{1}>{0}</{1}>", s, wrapper);
}
return sb.ToString();
}
叫喜欢;
lstHeaders.WrapElementsWithTag("td");
使用StringBuilder
类:
var sb = new StringBuilder();
lstHeaders.ForEach(x => sb.AppendFormat("<td>{0}</td>", x));
return sb.toString()
您可以执行以下操作:
string.Format("<td>{0}</td>", string.Join("</td><td>", lstHeaders));
使用 Linq 和String.Concat
:
string result = string.Concat(lstHeaders.Select(s => string.Format("<td>{0}</td>", s)));
查询语法可能更清楚:
string result = string.Concat(from s in lstHeaders select string.Format("<td>{0}</td>", s));
通常简单的字符串连接对于构建像 html 和 xml 这样的元数据是有风险的。如果您绝对确定文本不会破坏元语法,您肯定可以使用 StringBuilder 或 LinQ 来做到这一点。说,那些字符串已经被转义了。
否则,您可以考虑使用 HtmlTextWriter。在 LINQ 中使用 HtmlTextWriter 应该不难。