2014-12-14 2 views
1

Я создал this приложение.Ошибка в применении счетчиков слов

Программа подсчитывает количество слов в тексте.

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

Вот JQuery:

counter = function() { 
     var value = $('#text').val(); 

     if (value.length == 0) { 
      $('#wordCount').html(0); 
      $('#totalChars').html(0); 
      $('#charCount').html(0); 
      $('#charCountNoSpace').html(0); 
      return; 
     } 
     //var regex1 = /[^A-Za-z_]/gim; 
     var regex1 = /[^a-z_]/gim; 
     var regex2 = /\s+/gi; 
     var textTrimmed = value.replace(regex1, ''); 
     var wordCount = textTrimmed.trim().replace(regex2, ' ').split(' ').length; 

     var totalChars = value.length; 
     var charCount = value.trim().length; 
     var charCountNoSpace = value.replace(regex1, '').length; 

     $('#textFiltered').html(textTrimmed.trim().replace(regex2, ' ')); 
     $('#textTrimmed').html(textTrimmed); 
     $('#wordCount').html(wordCount); 
     $('#totalChars').html(totalChars); 
     $('#charCount').html(charCount); 
     $('#charCountNoSpace').html(charCountNoSpace); 
    }; 

    $(document).ready(function() { 
     $('#count').click(counter); 
     $('#text').change(counter); 
     $('#text').keydown(counter); 
     $('#text').keypress(counter); 
     $('#text').keyup(counter); 
     $('#text').blur(counter); 
     $('#text').focus(counter); 
    }); 

HTML код:

<!DOCTYPE html> 
<html> 
<head> 
    <title>Copy &amp; Paste, Word &amp; Character counter</title> 
</head> 
<body> 
    <div id="border"> 
     <textarea id='text'></textarea> 
    </div> 
    <button id="count">Count</button> 
    <div id="result"> 

     Words: <span id="wordCount">0</span><br/> 
     Total Characters(including trails): <span id="totalChars">0</span><br/> 
     Characters (excluding trails): <span id="charCount">0</span><br/> 
     Characters (excluding all spaces): <span id="charCountNoSpace">0</span> 
    </div> 
    </body> 
    </html> 

Любая идея, как исправить ошибку?

Заранее спасибо.

+0

Не можете понять вашу проблему точно, не могли бы вы перефразировать? Я чувствовал, что независимо от того, сколько слов я вхожу, оно показывает только одно слово. – Playmaker

+0

Выше проблема заключалась в том, что регулярное выражение не было в кавычках (должно быть var regex1 = '/ [^ a-z _]/gim';) - Но я думаю, что ваша проблема еще одна. – Playmaker

ответ

2

Ваш вопрос не очень понятно, но от того, что я понимаю, что я думаю, что проблема находится в строке ниже

var wordCount = textTrimmed.trim().replace(regex2, ' ').split(' ').length; 

изменить его к этому

var wordCount = value.trim().split(' ').length; 

JSFIDDLE

1

Если проблема заключается в том, что вы не хотите, чтобы какой-либо символ считался словом до его завершения, тогда вы можете проверить наличие '' перед его отображением как счет

Добавьте эту строку коды после инициализации переменной WordCount

if (textTrimmed.replace(regex2, ' ').indexOf(' ') < 0) 
    wordCount = 0; 

См: http://jsfiddle.net/54v67r36/

Помимо этого, ваша скрипка не считая, как регулярное выражения выражения не было в кавычках (см моих комментариев) - хотя у вашего фактического счетчика не было этой проблемы

Смежные вопросы