Как проставить запятые между словами (алгоритм)

Тема в разделе "PHP", создана пользователем drawing4, 2 мар 2010.

Статус темы:
Закрыта.
Модераторы: latteo
  1. drawing4

    drawing4

    Регистр.:
    21 ноя 2008
    Сообщения:
    323
    Симпатии:
    37
    Такой вопрос. Пустяковый, но чего-то не могу додуматься.
    Как проставить запятые между всеми словами кроме последнего. Количество слов неизвестно

    Реализовываться будет на яваскрипте

    проверяются значения чекбоксов, нужно сделать обход в цикле всех чекбоксов, и вывести значения для отмеченных в строку через запятую. Естественно количество отмеченных checkbox я не знаю.

    Подскажите алгоритм пожалуйста, а то заблудился в трех соснах
     
  2. chang

    chang

    Регистр.:
    20 ноя 2009
    Сообщения:
    364
    Симпатии:
    117
    если верно понял то....

    1) проверяем текстовое поле или булевскую переменную
    2) если пустое добавляем в него слово "слово" ( без запятой)
    иначе добавляем ", слово" ( с запятой в начале )
     
  3. drawing4

    drawing4

    Регистр.:
    21 ноя 2008
    Сообщения:
    323
    Симпатии:
    37
    А с первым элементом как быть? Дописывать его перед циклом? :) Но ведь я ж не знаю какой элемент первым будет. Т.е. какой чекбокс (первый или десятый например) будет в очереди первым.

    P.S. Додумался до такой конструкции. Добавляем по принципу слово-запятая, после цикла определяем длину строки, и потом режем ее до длины length-1.
    Правда может кто подскажет более изящный метод ;)
     
  4. dandandan

    dandandan

    Регистр.:
    7 авг 2008
    Сообщения:
    975
    Симпатии:
    255
    Думаю в ява есть регулярки. Могу рассказать как бы я это сделал на php.
    Формируем строку с пробелами между словами:
    а б в г д
    Затем обрезаем пустоту сначала и с конца этого предложения trim()
    а затем заменяем пробел на запятую (можно на запятую с пробелом) str_replace()
     
  5. saen

    saen

    Регистр.:
    6 авг 2006
    Сообщения:
    756
    Симпатии:
    129
    Загоняешь значения чекбоксов в массив и склеиваешь его через join.

    Пример:
    ["a", "b", "c", "d"].join(', ');
     
    drawing4 нравится это.
  6. drawing4

    drawing4

    Регистр.:
    21 ноя 2008
    Сообщения:
    323
    Симпатии:
    37
    Спасибо, изящное решение. Получше моего будет :)
     
Статус темы:
Закрыта.