Запись массива в виде списка через запятую - PullRequest
0 голосов
/ 13 августа 2010

Теперь это кажется очень простым вопросом, и я, может быть, просто толстый, но я пытаюсь добиться, в основном, печати массива на экране в следующем формате:

Item 1, Item 2, Пункт 3, пункт 4

Хотя я говорю экрану, поскольку это был лучший способ, которым я мог описать его, я фактически записываю его на страницу внутри некоторого Javascript.

СпособВ настоящее время я собираюсь написать это следующим образом:

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

Но очевидно, что возвращается строка Item 1, Item 2, Item 3, Item 4,.

Есть ли простой способ избавиться от последнегозапятая или я по этому поводу совершенно не права?

Ответы [ 9 ]

6 голосов
/ 13 августа 2010

Вы можете использовать String.Join метод. Не уверен насчет VB, но что-то вроде этого:

Response.Write(String.Join(", ", theDates.Select(Function(n) "'" & n.CallDate & "'").ToArray()))
6 голосов
/ 13 августа 2010

Попробуйте String.Join ( документация ).Мой VB ржавый, но, надеюсь, вы можете прочитать это C #:

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

Response.Write(String.Join(", ", datesInQuotes));
3 голосов
/ 13 августа 2010

Как уже говорили другие, String.Join - это то, что вам нужно в этом случае.

Более обобщенно: вы должны определить, когда вы находитесь в элементе last и не добавляйте запятую или определяйте, когда вы находитесь у первого элемента, а не добавляйте запятую.

Обычно легчеопределить, когда вы в первый раз, так:

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

( Простите мой ржавый VB)

2 голосов
/ 13 августа 2010

Нет необходимости в String. Присоединяйтесь к этому.

st="'"
for each b in theDates
    Response.Write(st + b.CallDate + "'")
    st=", '"
next
0 голосов
/ 08 сентября 2011

все слишком сложно.Сохраняйте это простым

dim st as string ="'"
for each b in theDates
   Response.Write(st + b.CallDate + "'")
   st=", '"
next
response.write (st.TrimEnd(New Char() {" ", ","})
0 голосов
/ 13 августа 2010

In C #:

for (int i = 0; i < theDates.Length; i++)
{
    if (i > 0)
    {
        Response.Write(",");
    }
    Response.Write(theDates[i]);
}
0 голосов
/ 13 августа 2010

Я бы порекомендовал сделать то же, что и вы, а затем использовать Response.Remove (s.Length-1, 1)

0 голосов
/ 13 августа 2010

Вы можете написать запятую перед каждым элементом, кроме первого.

0 голосов
/ 13 августа 2010

Нет, вы не ошиблись - полностью.

Переберите theDates и поместите данные в строку.

После завершения цикла удалите последнюю запятую:

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

Response.Write (туЗЬптд)

Примечание: вы не должны выводить на экран с помощью Response.Write. Вы должны установить текст серверного элемента управления в качестве вывода. Ярлык в порядке. Вы заметите, что ваш текст не появится там, где, как вы думаете, он появится, если вы этого не сделаете.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...