StringBuilder, добавьте Tab между значениями - PullRequest
3 голосов
/ 08 февраля 2012

У меня небольшая проблема:

У меня есть список полей с 3 значениями.Я хочу построить свою строку с этими тремя значениями, разделенными "TAB" ..

Код:

StringBuilder stringBuilder = new StringBuilder();
foreach (string field in fields)
{
    stringBuilder.Append(field).Append("\t");
}
stringBuilder.AppendLine();
return stringBuilder.ToString();

Вкладка находится только между 3-м и2-е значение (между 1-м и 2-м - пробел?!)

Итак, я попробовал это:

StringBuilder stringBuilder = new StringBuilder();
foreach (string field in fields)
{
    stringBuilder.Append(field + "\t").Append("\t");
}
stringBuilder.AppendLine();
return stringBuilder.ToString();

Затем у меня есть 2 вкладки между 3-м и 2-м, одна вкладка между 1-м и 2-м итакже пробел между 1-м и 2-м ..

(пробел всегда есть, как этого избежать?)

Так что мне делать?Нужна только (без пробелов ..) табуляция между этими значениями ..

Ответы [ 5 ]

11 голосов
/ 08 февраля 2012

попробуй

StringBuilder stringBuilder = new StringBuilder();
foreach (string field in fields)
{
    stringBuilder.Append(field.Trim()).Append("\t");
}
stringBuilder.AppendLine();
return stringBuilder.ToString();

В основном я бы просто использовал return string.Join ( "\t", fields );.

2 голосов
/ 08 февраля 2012

Я думаю, вы путаете с символами табуляции и соками.

Ожидаете ли вы, что в конце каждого слова будет добавлено фиксированное число пробелов?

\ t -> это просто символ табуляции

Следующее генерируется кодом, данным вами.

Java    StackOverflow   Banyan
Javasun StackOverflow   Banyan

Выше две строки имеют одинаковые символы табуляции ч / б 1-е и 2-е слово.

если вы введете еще один символ в конце «Javasun», он будет расширяться следующим образом

Javaasunk   StackOverflow   Banyan
1 голос
/ 08 февраля 2012

Вместо зацикливания вы можете использовать string.Join:

StringBuilder stringBuilder = new StringBuilder();

stringBuilder.AppendLine(string.Join("\t", fields));

Обратите внимание, что вы также можете передать строку непосредственно в AppendLine.

1 голос
/ 08 февраля 2012

Я бы подумал, что вы захотите

StringBuilder stringBuilder = new StringBuilder();
foreach (string field in fields)
{
    stringBuilder.Append(field);
    stringBuilder.Append("\t");
}
stringBuilder.AppendLine();
return stringBuilder.ToString();
0 голосов
/ 16 августа 2018
Sub WarningWindow(ByVal content As String)
    Dim sw As New StringWriter()
    Dim hw As New HtmlTextWriter(sw)
    Dim gridHTML As String = sw.ToString().Replace("""", "'").Replace(System.Environment.NewLine, "")
    Dim sb As New StringBuilder()
    Dim a As String = "Welcomeback"
    'GridView1.RenderControl(hw)
    sb.Append("<script type = 'text/javascript'>")
    sb.Append("window.onload = new function(){")
    sb.Append("var printWin = window.open('', '', 'left=0")
    sb.Append(",top=0,width=1400,height=500,resize=yes,scrollbars =yes');")
    sb.Append("printWin.document.write(""")
    sb.Append("<INPUT Type=Button Name=Close Size=40  Value='Clsose(GSS)' onclick='self.close()'; / > ")
    sb.Append("</br><INPUT Type=Button Name=fu Size=40  Value='Alert' onclick=javascript:window.alert('" & a & "'); / > ")
    sb.Append("<INPUT Type=Text Name=gss Size=40  Value=300 ; / > ")
    sb.Append(" <P>")
    sb.Append(content)
    sb.Append(""");")
    sb.Append("printWin.focus();")
    sb.Append("printWin.show;};")
    sb.Append("</script>")
    ClientScript.RegisterStartupScript(Me.GetType(), "suvesh", sb.ToString())
End Sub
...