Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 13.05.2010, 13:09
Новичок на форуме
Отправить личное сообщение для wasia Посмотреть профиль Найти все сообщения от wasia
 
Регистрация: 13.05.2010
Сообщений: 1

Подсчет СЛОВ в форме
Добрый день. Помогите переделать скрипт. Приведу код подсчета симовлов в форме. Нужно чтобы подсчет происходил не символов а слов. Пожалуйста помогите.
Код:
<script>
function isSpace(s){
return (s==" " || s=="n" || s=="13" || s=="t" || s=="r")?true:false
}
function count(){
var c=0
var i
var prevspace=true
var str=document.forms.form.text.value
for(i=str.length-1;i>=0;i--){
if(isSpace(str.charAt(i)) && prevspace){
}else{
c++
}
prevspace=isSpace(str.charAt(i))
}
document.forms.form.total.value=c
return false
}
</script>
<form enctype='multipart/form-data' name='form' action='#' method='post'>
Сообщение: <textarea cols='60' rows='20' onkeypress='count()' onkeyup='count()' name='text'></textarea><br>

Количество символов:
<input type='text' name='total' size='6' >
</form>

Последний раз редактировалось wasia, 13.05.2010 в 13:19.
Ответить с цитированием
  #2 (permalink)  
Старый 13.05.2010, 13:17
Аватар для Gvozd
Матрос
Отправить личное сообщение для Gvozd Посмотреть профиль Найти все сообщения от Gvozd
 
Регистрация: 04.04.2008
Сообщений: 6,246

http://javascript.ru/String/split
Ответить с цитированием
  #3 (permalink)  
Старый 17.05.2010, 18:57
Новичок на форуме
Отправить личное сообщение для atxquadro Посмотреть профиль Найти все сообщения от atxquadro
 
Регистрация: 02.02.2010
Сообщений: 1

var string = 'abc def ghi';
var test = string.split(/\s+/);
alert(test.length);
Ответить с цитированием
  #4 (permalink)  
Старый 17.05.2010, 19:02
Аватар для e1f
e1f e1f вне форума
Профессор
Отправить личное сообщение для e1f Посмотреть профиль Найти все сообщения от e1f
 
Регистрация: 03.04.2009
Сообщений: 1,263

var string = ' abc def ghi ';
var test = string.split(/\s+/);
alert(test.length);


Вывод -- не айс. Имхо так:
var string = ' abc def ghi ';
var test = string.match(/(\S+)/g);
alert(test.length);
Ответить с цитированием
  #5 (permalink)  
Старый 17.05.2010, 19:40
Аватар для subzey
Пионэр
Отправить личное сообщение для subzey Посмотреть профиль Найти все сообщения от subzey
 
Регистрация: 16.11.2009
Сообщений: 1,322

Или так:
var string = ' abc def ghi ';

var wordCount = 0;
string.replace(/(^|\s)+[^\s]+/g, function(){wordCount++});

alert(wordCount);
Ответить с цитированием
  #6 (permalink)  
Старый 17.05.2010, 19:58
Аватар для e1f
e1f e1f вне форума
Профессор
Отправить личное сообщение для e1f Посмотреть профиль Найти все сообщения от e1f
 
Регистрация: 03.04.2009
Сообщений: 1,263

subzey, емнип, введение в регексп ИЛИ вызывает его сильное замедление (причем даже в перле). Ну, не говоря уже о replace

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
    <title>match VS replace</title>

    <meta http-equiv="content-type" content="text/html;charset=utf-8" />
    <meta name="generator" content="Geany 0.18.1.1" />

    <script type="text/javascript">
    function get_value() {
        return document.getElementById('input').value;
    }

    function print_result(res) {
        document.getElementById('output').appendChild(document.createElement('DIV')).
            appendChild(document.createTextNode(res));
    }

    function test_match() {
        var value = get_value(),
            start = new Date().getTime();

        // test
        for (var i = 1000; i--; ) {
            var words = value.match(/(\S+)/g);
            var wordCount = words && words.length;
        }
        // end

        var end = (new Date().getTime() - start);
        print_result('Replace: ' + end + 'ms');
    }

    function test_replace() {
        var value = get_value(),
            start = new Date().getTime();

        // test
        for (var i = 1000; i--; ) {
            var wordCount = 0; 
            value.replace(/(^|\s)+[^\s]+/g, function(a){wordCount++});
        }
        // end

        var end = (new Date().getTime() - start);
        print_result('Replace: ' + end + 'ms');
    }

    
    </script>
</head>

<body>
<p><textarea id="input" cols="40" rows="5">Lorem ipsum dolor sit amet, consetetur sadipscing elitr,
sed diam nonumyeirmod tempor invidunt ut labore et dolore magna aliquyam erat,
sed diamvoluptua. At vero eos et accusam et justo duo dolores et ea rebum.
Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet.
Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumyeirmod tempor
invidunt ut labore et dolore magna aliquyam erat, sed diamvoluptua. At vero eos et accusam
et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est
Lorem ipsum dolor sit amet.Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam
nonumyeirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diamvoluptua. At
vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata
sanctus est Lorem ipsum dolor sit amet.Lorem ipsum dolor sit amet, consetetur sadipscing elitr,
sed diam nonumyeirmod tempor invidunt ut labore et dolore magna </textarea></p>
<p><button onclick="test_match()">Match</button><button onclick="test_replace()">Replace</button></p>
<div id="output"></div>
</body>
</html>
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Подсчет количества слов в поле формы. Guranin Общие вопросы Javascript 7 10.08.2009 13:35
Результат вычислений в экспоненциальной форме Sharp Общие вопросы Javascript 19 02.04.2009 21:59
Добавление полей к форме deliro Общие вопросы Javascript 7 22.03.2009 15:20
Обращение к форме октрытого окна SparkDSD Events/DOM/Window 3 27.02.2009 14:02
добавление окошка в скрипт подсчета слов Гость Общие вопросы Javascript 10 11.03.2008 17:07