将数组作为逗号分隔列表写入屏幕

时间:2010-08-13 09:31:54

标签: asp.net vb.net arrays string

现在它似乎是一个非常简单的问题而且我可能只是很厚,但我想要实现的基本上是按以下格式打印一个数组:

第1项,第2项,第3项,第4项

虽然我说屏幕,因为这是我描述它的最佳方式,但我实际上是将它写入一些Javascript中的页面。

我目前正在编写的方式如下:

for each b in theDates
    Response.Write("'" + b.CallDate + "',")
next

但显然会返回一个Item 1, Item 2, Item 3, Item 4,字符串。

有没有一种简单的方法可以摆脱最后一个逗号或我是否完全错误?

9 个答案:

答案 0 :(得分:6)

尝试String.Joindocumentation)。我的VB很生疏,但希望你能读到这个C#:

var datesInQuotes = theDates.Select(date => "'" + date.CallDate + "'");

Response.Write(String.Join(", ", datesInQuotes));

答案 1 :(得分:6)

您可以使用String.Join方法。不确定VB,但有类似的东西:

Response.Write(String.Join(", ", theDates.Select(Function(n) "'" & n.CallDate & "'").ToArray()))

答案 2 :(得分:3)

正如其他人所说,String.Join就是你想要的。

更一般地说:你必须检测你何时在最后元素并且没有附加逗号,或者检测你何时在第一个元素,不添加逗号。

通常情况下,当您处于第一时间时更容易检测到,所以:

dim firstDone as bool = false
for each b in theDates
    if firstDone then Response.Write (",")
    Response.Write("'" + b.CallDate + "'")
    firstDone = true
next

请原谅我生锈的vb)

答案 3 :(得分:2)

没有必要使用String.join。

st="'"
for each b in theDates
    Response.Write(st + b.CallDate + "'")
    st=", '"
next

答案 4 :(得分:0)

不,你没错 - 完全。

遍历日期并将数据放入字符串中。

完成循环后,删除最后一个逗号:

myString.Remove(myString.Length - 1,1);

回复于(myString的)

附注:你真的不应该用Response.Write输出到屏幕。您应该将服务器控件的文本设置为输出。标签非常好。您会注意到,如果不这样做,您的文本将不会出现在您认为的位置。

答案 5 :(得分:0)

除了第一个项目之外,您可以在每个项目前写下逗号。

答案 6 :(得分:0)

我建议您按照自己的意愿行事,然后使用Response.Remove(s.Length-1,1)

答案 7 :(得分:0)

在C#中:

for (int i = 0; i < theDates.Length; i++)
{
    if (i > 0)
    {
        Response.Write(",");
    }
    Response.Write(theDates[i]);
}

答案 8 :(得分:0)

太复杂了。保持简单

dim st as string ="'"
for each b in theDates
   Response.Write(st + b.CallDate + "'")
   st=", '"
next
response.write (st.TrimEnd(New Char() {" ", ","})