Asp.net 将数组作为逗号分隔的列表写入屏幕

Asp.net 将数组作为逗号分隔的列表写入屏幕,asp.net,vb.net,arrays,string,Asp.net,Vb.net,Arrays,String,现在,这似乎是一个非常简单的问题,我可能有点笨,但我试图实现的基本目标是以以下格式将数组打印到屏幕上: 项目1、项目2、项目3、项目4 虽然我说的是screen,因为这是我能描述它的最好方式,但我实际上是在一些Javascript中将它写入页面 我目前的写作方式如下: for each b in theDates Response.Write("'" + b.CallDate + "',") next 但很明显,这将返回一个字符串项目1、项目2、项目3、项目4、 有没有一种简单的方法可

现在,这似乎是一个非常简单的问题,我可能有点笨,但我试图实现的基本目标是以以下格式将数组打印到屏幕上:

项目1、项目2、项目3、项目4

虽然我说的是screen,因为这是我能描述它的最好方式,但我实际上是在一些Javascript中将它写入页面

我目前的写作方式如下:

for each b in theDates
    Response.Write("'" + b.CallDate + "',")
next
但很明显,这将返回一个字符串
项目1、项目2、项目3、项目4、


有没有一种简单的方法可以去掉最后一个逗号,还是我完全错了

尝试
String.Join
()。我的VB已经生锈了,但希望您能阅读以下C#:

你们可以使用这个方法。关于VB不确定,但类似于:

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

正如其他人所说,在本例中,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)

不,你没有错——完全没有错

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

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

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

Response.Write(myString)


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

您可以在每个项目前面写逗号,但第一个项目除外。

无需字符串。加入此项

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

我建议您按照刚才的操作,然后使用响应。在C#中删除(s.Length-1,1)

for(int i=0;i0)
{
回答。写(“,”);
}
回复。填写(日期[i]);
}

太复杂了。保持简单

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

仅使用String.Substring(0,yourString.length-1)不正常?我认为这是不公平的。我很惊讶您选择了一个aswer,它做了与您希望避免的相同的事情。这样做的代码是由道格拉斯编写的。阅读他的答案和我随后的vb编辑。@在正常情况下,如果字符串长度为零会发生什么?@MarkJ-有效点。虽然可以添加字符串长度检查-我只是想确认我对问题的理解是否与前面的注释正确。这将在内存中构建两次字符串,最好从一开始就正确构建。显然,这是可行的,但是我认为使用String.Join来连接字符串更清楚地表达了意图,因此仍然应该考虑使用String.Join来连接字符串。我正在考虑将最终版本的代码更改为string.join,尽管目前这项工作已经完成。事实上,我得到的所有答案都差不多。你们C#人都是奇怪的人。String.Join很明显。lambda函数在你习惯之前看起来确实有点奇怪。我很惊讶OP选择了一个没有解决他的问题的答案。它留下了尾随逗号、空格和倒逗号!这是执行他/她请求的代码。VB.NET的等效代码是
Response.Write(String.Join(“,”,theDates.Select(Function(d)”“&d.CallDate&“”))
注意OP需要每个日期的CallDate。@Alex:干杯,解决了这个问题。选择的答案只设置循环中的st变量,即响应。Write始终以“.”结束。不使用该代码的一个很好的理由是,很容易错过它的功能@亚历克斯:你提到的问题,我根本没有得到公认的答案。事实上,我已经尝试了在这个问题上得到的所有答案,并得到了与之相同的结果。基于Douglas的一条注释,我将把string.join方法作为应用程序中的最终方法,但现在,它满足了我的要求。我肯定OP特别说他想去掉最后一个逗号。@Alex我不认为后面会留下逗号。每次它写一个逗号,它都会在后面写一个日期。@Alex,我已经重命名了我的变量,这样更容易理解吗?
for (int i = 0; i < theDates.Length; i++)
{
    if (i > 0)
    {
        Response.Write(",");
    }
    Response.Write(theDates[i]);
}
dim st as string ="'"
for each b in theDates
   Response.Write(st + b.CallDate + "'")
   st=", '"
next
response.write (st.TrimEnd(New Char() {" ", ","})