ФорумПрограммированиеJavaScript → Подсчет слов

Подсчет слов

  • kasichvadim

    Сообщения: 2 Репутация: N Группа: Кто попало

    Spritz 2 декабря 2008 г. 0:48

    Здравствуйте!

    Вобщем в jаvаscript я полный ноль

    Мне нужно сделать подсчет слов в поле textarea.
    Слова считать по пробелам. Только считать те слова, которые равны 3 или более символам. И сразу под этим полем писать количество слов.

    Заранее спасибо!
  • phpdude

    Сообщения: 26646 Репутация: N Группа: в ухо

    Spritz 2 декабря 2008 г. 0:57, спустя 9 минут 19 секунд

    добрый ночь, как было скзаано делается это достаточно просто
    Сапожник без сапог
  • phpdude

    Сообщения: 26646 Репутация: N Группа: в ухо

    Spritz 2 декабря 2008 г. 0:58, спустя 22 секунды

    страшная строка

    $("#textboxid").val($("#textareaid").val().replace(/\s\S{0,2}\s/g,"").split(/\s+/).length);

    Сапожник без сапог
  • AlexB

    Сообщения: 4306 Репутация: N Группа: в ухо

    Spritz 2 декабря 2008 г. 1:02, спустя 4 минуты 20 секунд

    Еще надо бы добавить, что для того, чтоб это работало необходима библиотека JQuery.
  • phpdude

    Сообщения: 26646 Репутация: N Группа: в ухо

    Spritz 2 декабря 2008 г. 1:05, спустя 3 минуты 5 секунд

    рассказываю.

    $("#textareaid").val() - вернет значение(текст) элемента с id=textareaid, будь то textarea или textbox без разницы.

    $("#textareaid").val().replace(/\s\S{0,2}\s/g,"") - применит к этому значению функцию замены по регулярному выражению, чтобы вытереть слова короче 3 символов.

    $("#textareaid").val().replace(/\s\S{0,2}\s/g,"").split(/\s+/) - работает над почищенной уже от 2символьных слов строкой, разбивает ее в массив по множественному пробелу(1 пробел или более).

    (1) $("#textareaid").val().replace(/\s\S{0,2}\s/g,"").split(/\s+/).length - length просто вернет количество элементов в этом полученном массиве.

    а $("#textboxidcount").val(…) присвоит элементу с id=textboxidcount значение, указанное в скобках. у нас в свобках - количество полученное в (1), а там количество слов длиннее 2символов. вот и все :)

    можете без jquery, но с ним удобнее присваивать и извлекать значения, к тому же будет работать 100% во всех браузерах.

    скажу честно код не проверял, мб допустил синт ошибку, но с виду ее не видно.

    вот примерный "надеюсь" рабочий html + javascript код

    <script src="http://code.jquery.com/jquery.js" type="text/javascript"></script>
    <script type="text/javascript">
    function calc()
    {
        $("#textboxidcount").val($("#textareaid").val().replace(/\s\S{0,2}\s/g,"").split(/\s+/).length);
    }
    </script>

    <textarea id="textboxid" onchange="calc()"></textarea><input type="text" id="textboxidcount" />
    Сапожник без сапог
  • phpdude

    Сообщения: 26646 Репутация: N Группа: в ухо

    Spritz 2 декабря 2008 г. 1:05, спустя 18 секунд

    AlexB, а вам слабо все так расписать? )))
    Сапожник без сапог
  • kasichvadim

    Сообщения: 2 Репутация: N Группа: Кто попало

    Spritz 2 декабря 2008 г. 1:06, спустя 1 минуту 16 секунд

    Ну а попроще можно??? ;)

    Типа такого:

    fvar maximalwords=50000
    if (document.layers) {netscapecorrector=1;maximalwords+=1}
    if (document.all) {netscapecorrector=0}
    function countwords() {
    var words=""
    var content=""
    var corrector=0
    var text=document.countform.text.value;
    words=text.split(" ")


    if (words[words.length-1]=="") {corrector=1;}
    document.countform.countbox.value=(words.length)-corrector

    if (words.length-1>=maximalwords) {
    for (i=0;i<maximalwords-netscapecorrector;i++) {
    content+=words+" "
    document.countform.text.value=content
    }
    }
    var timer=setTimeout("countwords()",100)
    }
    window.onload=countword

    Только этот скрипт считает слова по количеству элементов массива. А мне нужно это доработать на подсчет слов от 3 символов.
  • phpdude

    Сообщения: 26646 Репутация: N Группа: в ухо

    Spritz 2 декабря 2008 г. 1:09, спустя 2 минуты 33 секунды

    http://pyha.ru/forum/topic/1493.msg24718#msg24718

    прочитай :) моя строчка работает точно также, просто использует слегка более правильные вещи.
    Сапожник без сапог
  • AlexB

    Сообщения: 4306 Репутация: N Группа: в ухо

    Spritz 2 декабря 2008 г. 1:17, спустя 7 минут 53 секунды


    AlexB, а вам слабо все так расписать? )))
    Ну что могу сказать, упрек справедливый. Не то что бы слабо, но часто бывает лениво … )))))))
    В оправдание могу сказать, что обычно начинаю рассписывать, не с первой мессаги, а когда вижу что человек адекватен …

    kasichvadim, если тебе еще надо количество символов регулировать, то сам Бог велел регулярками пользоваться …
  • phpdude

    Сообщения: 26646 Репутация: N Группа: в ухо

    Spritz 2 декабря 2008 г. 1:31, спустя 13 минут 37 секунд

    короче, мой понт был фейк, я понял свою ошибку)) регулярки хуево написал чтоли.

    смотри молодой человек :)

    <script src="http://code.jquery.com/jquery.js" type="text/javascript"></script>
    <script type="text/javascript">
    function calc()
    {
    val = $.trim($("#textareaid").val()).split(/\s+/g);
    $("#textboxidcount").val($.grep(val,function (str) { return $.trim(str).length>2; }).length);
    }
    </script>

    <textarea id="textareaid" onkeyup="calc()"></textarea><input type="text" id="textboxidcount" />


    вот это 100% рабочий код

    $.grep - функция для фильтрации массивов. логика проста с виду :) и скажи там если чо что мы тут лучшие! мы правда помогаем и можем почти на любой вопрос ответить ;)
    Сапожник без сапог
  • phpdude

    Сообщения: 26646 Репутация: N Группа: в ухо

    Spritz 2 декабря 2008 г. 1:34, спустя 3 минуты 10 секунд

    ТС удачи, надеюсь помог. я пошел спать. бб.
    Сапожник без сапог
  • md5

    Сообщения: 11960 Репутация: N Группа: в ухо

    Spritz 2 декабря 2008 г. 1:42, спустя 8 минут 8 секунд

    phpdude, беспаливный само-пиарщик )))))
    все умрут, а я изумруд
  • phpdude

    Сообщения: 26646 Репутация: N Группа: в ухо

    Spritz 2 декабря 2008 г. 1:43, спустя 1 минуту 30 секунд

    меня тут предложили на хабре пропиарить, говорят "заказов будет обосратся" думаю согласиться или нахуй … пока времени нет сильно то работать))))))))
    Сапожник без сапог
  • phpdude

    Сообщения: 26646 Репутация: N Группа: в ухо

    Spritz 2 декабря 2008 г. 1:45, спустя 1 минуту 27 секунд


    phpdude, беспаливный само-пиарщик )))))
    не ну а кстати, корыстные цели у всех и всегда. даже ТС из корыстных побуждений просит помощи если посудить здраво, ТС получает помощь, я чуток пиару :) все по честному ))))))) да и кстати реклама не бывает плохой, она бывает недостаточной ;) мб наебнем пхпфорум? :) навалимся так сказать
    Сапожник без сапог
  • phpdude

    Сообщения: 26646 Репутация: N Группа: в ухо

    Spritz 2 декабря 2008 г. 1:48, спустя 3 минуты 10 секунд

    у меня есть с десяток варезников :-D так что я могу создать траф небольшой н пхпфорум, допустим на главную страницу, явно кеширования нет в вбулетене или чо там у нее.

    поставить по 5 фреймов злостных на каждый, скрывающихся от реферера, чтобы не закрыли дыру). фреймы на главую + на поиск :)

    ибо поиск там явно там ебучий какой нить))))))))))

    на варезниках есть посещаловка от 500 в день * 10 = 5000 человек * 5 = 25 000 открытый главной. :)))) ну я какбы это, суровый боец то :)
    Сапожник без сапог

Пожалуйста, авторизуйтесь, чтобы написать комментарий!