0

このように定義された文字列のリストがあります

List<String> lstHeaders = new List<string>(new String[]{"str","str1","str2"}); 

このようなものを得るために、すべての要素を特定の形式で結合する方法が必要です

<td>str</td><td>str1</td><td>str2</td>

しかし、これをコードのオンラインで取得します。このようなものです

"<th>"+lstHeaders.functionToGetFormated()+"</th>"
4

5 に答える 5

2

おそらく、これには独自の拡張メソッドを作成する方が理にかなっています。そのように正確に動作するビルトインはありません(私が知っていることです)。

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");
于 2013-01-18T00:20:40.137 に答える
2

StringBuilderクラスを使用します。

var sb = new StringBuilder();
lstHeaders.ForEach(x => sb.AppendFormat("<td>{0}</td>", x));
return sb.toString()
于 2013-01-18T00:23:24.980 に答える
0

次のようなことができます。

string.Format("<td>{0}</td>", string.Join("</td><td>", lstHeaders));
于 2013-01-18T00:24:31.693 に答える
0

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));
于 2013-01-18T00:25:45.260 に答える
0

一般に、単純な文字列連結は、html や xml などのメタ データの構築に対して危険です。テキストがメタ構文を破損しないことが絶対に確実な場合は、StringBuilder または LinQ を使用して確実に行うことができます。たとえば、これらの文字列はすでにエスケープされています。

それ以外の場合は、HtmlTextWriter の使用を検討してください。また、LINQ で HtmlTextWriter を使用することは難しくありません。

于 2013-01-18T00:47:40.387 に答える