避免使用最后一个值的逗号分隔符

时间:2011-01-18 16:17:48

标签: asp.net

我正在以这样的格式在网页上生成输出

  

({ “1”: “杰夫”, “2”: “汤姆”, “3”: “迈克尔”,})

为此,基本上这是我正在使用的代码

Response.Write("(" + "{");
//
for (Int32 i = 0; i < k.Length; i++)
{
  Response.Write(Convert.ToString(k.GetValue(i)) + ",");
}
//
Response.Write("}" + ")");

注意我的输出,在Michael之后“有一个我不想要的逗号,因为这是最后一个vaue但是这个出现是因为,在for循环中。如何防止这个/删除这个最后一个逗号从出现?

我的输出应为({"1":"Jeff","2":"Tom","3":"Michael"})(此处的最后一个值后面没有逗号)

8 个答案:

答案 0 :(得分:4)

假设k是一个字符串数组

List<string> tokens = k.ToList<string>();
Response.Write("({" + String.join<string>(",", tokens) + "})");

答案 1 :(得分:2)

Simplified和VB.Net,但我想你会得到它:

Dim values As New List(Of String)(New String() {"1:Jeff", "2:Tom", "3:Michael"})
Dim result As String = "({" & String.Join(",", values.ToArray) & "})"

如果k是像Array,List等的集合。

答案 2 :(得分:1)

根据迭代次数和发生频率,使用StringBuilder。

StringBuilder sb = new StringBuilder();

for (Int32 i = 0; i < k.Length; i++)
{
    sb.Append(",");
    sb.Append(Convert.ToString(k.GetValue(i)));
}
if (sb.Length > 0)  {
    sb.Remove(0,1);
}
Response.Write(String.Format("({{{0}}})", sb.ToString()));

另一种方式是:但是,它必须检查每次迭代。

StringBuilder sb = new StringBuilder();

for (Int32 i = 0; i < k.Length; i++)
{
    if (sb.Length > 0) { 
      sb.Append(","); 
    }
    sb.Append(Convert.ToString(k.GetValue(i)));
}
Response.Write(String.Format("({{{0}}})", sb.ToString()));

答案 3 :(得分:0)

如果你更改输出的方式来编写集合中的第一个对象,那么每个用逗号开头的人都可以正常工作。

        Response.Write("(" + "{");
        //
        Response.Write(Convert.ToString(k.GetValue(0)));
        for (Int32 i = 1; i < k.Length; i++)
        {
            Response.Write("," + Convert.ToString(k.GetValue(i)));
        }
        //
        Response.Write("}" + ")");

另一种方法是写入stringbuilder并输出除最后一个字符之外的所有字符

答案 4 :(得分:0)

你可以减少你的循环而不是增加......比如

for(Int32 i = k.Length; i&gt; 0; i - )

并放:if(i == 1)removeComa;

答案 5 :(得分:0)

Response.Write("(" + "{");
//
for (Int32 i = 0; i < k.Length; i++)
{
  Response.Write(Convert.ToString(k.GetValue(i)) + (i == k.Length - 1 ? "" : ","));
}
//
Response.Write("}" + ")");

答案 6 :(得分:0)

我最喜欢的修复方法之一是使用prepend代替,只在第一项之后设置逗号作为分隔符值(对不起VB):

    Dim seperator As String = ""

    For i As Integer = 0 To k.Length
        Response.Write(seperator + Convert.ToString(k.GetValue(i)))
        seperator = ","
    Next

答案 7 :(得分:0)

在循环中,只需在计数到达最后一位数字时使用插入“中断”并且已经处理过了?