Чуть подправить скрипт. Подсчет слов в textarea.

Yulo

Постоялец
Регистрация
21 Апр 2008
Сообщения
153
Реакции
179
Есть скрипт который подсчитывает слова, пробелы и символы в textarea.
Что подправить в скрипте чтоб за слово он считал не каждую букву после пробела, а если в слове больше 2 букв то он считает что это слово, а если там 2 символа и меньше к примеру предлоги "на, в, к, по и т.д." скрипт не будет считать его за слово и увеличиватаь соотвественно число.
UPD Вот сам скрипт
Код:
$(function(){
$('#countSimbol>textarea').after('<small>Количество символов с пробелами: <span>0</span></small><br><small>Количество символов без пробелов: <span>0</span></small><br><small>Количество слов: <span>0</span></small>');
});

function countSimbol(t){
$(function(){
var Text=$(t).val();
var L=Text.length;   
if(L>0){var noSpace=Text.match(/\S/g).length; var W=Text.match(/\S+?\s|\S+?$/g).length;}
else {var noSpace=0; var W=0;}
$('#countSimbol span:first').html(L);   
$('#countSimbol span:eq(1)').html(noSpace);   
$('#countSimbol span:last').html(W);   
});}
 
Есть скрипт который подсчитывает слова, пробелы и символы в textarea.
Что подправить в скрипте чтоб за слово он считал не каждую букву после пробела, а если в слове больше 2 букв то он считает что это слово, а если там 2 символа и меньше к примеру предлоги "на, в, к, по и т.д." скрипт не будет считать его за слово и увеличиватаь соотвественно число.
Либо вносить слова в исключения, либо разбивать через пробелы split помоему. В php explode
Вот вам и слова и буквы. массирвом. берте и считаете. Если меньше 2х или в списке предлгов то delete.
 
Либо вносить слова в исключения, либо разбивать через пробелы split помоему. В php explode
Вот вам и слова и буквы. массирвом. берте и считаете. Если меньше 2х или в списке предлгов то delete.
У него же скрипт и так считает что ему надо.
Он хочет добавить исключения для слов, чья длина строки <= 2.
 
  • Нравится
Реакции: Yulo
Меня тоже ошеломили эти два ответа выше
Когда я отвечал на вопрос, еще не было секции UPD, и меня тоже ошеломил вопрос.
Я достал хрустальный шар, и он выдал ответ 42.
Тогда я предположил, что может вы не знаете того, что я вам написал в ответе.
 
проще с нуля переписать)
HTML:
 function countSimbol(t){
  var textArea = $(t), text = textArea.val(), result = '';

  text = text.replace(/\s+/g,' '); // удалит повторяющиеся пробелы
  text = $.trim(text); // удалит пробелы в начале и конце

  var textArr = text.split(' ');

  var i = textArr.length,
      q = 0;
  while(i--){
    if(textArr[i].length > 2){
      ++q;
    }
  }
  result += '<br>С пробелами: '+ text.length;
  result += '<br>Без проблелов: '+(text.length-(textArr.length-1));
  result += '<br>Слов: ' + textArr.length;
  result += '<br>Длина,кот. больше двух: ' + q;

  textArea.after(result);
  }

UPD, ну в вашем скрипте если, то как-то так:
HTML:
  $(function(){
$('#countSimbol>textarea').after('<small>Количество символов с пробелами: <span>0</span></small><br><small>Количество символов без пробелов: <span>0</span></small><br><small>Количество слов: <span>0</span></small>');
});

function countSimbol(t){
$(function(){
var Text=$(t).val();
var L=Text.length;
if(L>0){var noSpace=Text.match(/\S/g).length;
          var textArr = Text.split(' ');
  var i = textArr.length,
      W = 0;
  while(i--){
    if(textArr[i].length > 2){
      ++W;
    }
  }
    
       }
else {var noSpace=0; var W=0;}
$('#countSimbol span:first').html(L);
$('#countSimbol span:eq(1)').html(noSpace);
$('#countSimbol span:last').html(W);
});}
 
Последнее редактирование:
  • Нравится
Реакции: Yulo
проще с нуля переписать)
HTML:
 function countSimbol(t){
  var textArea = $(t), text = textArea.val(), result = '';

  text = text.replace(/\s+/g,' '); // удалит повторяющиеся пробелы
  text = $.trim(text); // удалит пробелы в начале и конце

  var textArr = text.split(' ');

  var i = textArr.length,
      q = 0;
  while(i--){
    if(textArr[i].length > 2){
      ++q;
    }
  }
  result += '<br>С пробелами: '+ text.length;
  result += '<br>Без проблелов: '+(text.length-(textArr.length-1));
  result += '<br>Слов: ' + textArr.length;
  result += '<br>Длина,кот. больше двух: ' + q;

  textArea.after(result);
  }

UPD, ну в вашем скрипте если, то как-то так:
HTML:
  $(function(){
$('#countSimbol>textarea').after('<small>Количество символов с пробелами: <span>0</span></small><br><small>Количество символов без пробелов: <span>0</span></small><br><small>Количество слов: <span>0</span></small>');
});

function countSimbol(t){
$(function(){
var Text=$(t).val();
var L=Text.length;
if(L>0){var noSpace=Text.match(/\S/g).length;
          var textArr = Text.split(' ');
  var i = textArr.length,
      W = 0;
  while(i--){
    if(textArr[i].length > 2){
      ++W;
    }
  }
   
       }
else {var noSpace=0; var W=0;}
$('#countSimbol span:first').html(L);
$('#countSimbol span:eq(1)').html(noSpace);
$('#countSimbol span:last').html(W);
});}
Огромное спасибо, второй вариант работает как надо. Первый вариант почему-то у меня под textarea, после каждого напечатанного символа, добавляется постоянно по 4 строчки из result
 
Первый вариант почему-то у меня под textarea, после каждого напечатанного символа, добавляется постоянно по 4 строчки из result
Ну, правильно, after срабатывает. я ж не знал, что у вас предполагается постоянное выполнение)
HTML:
function appendResult(arr){
  var result = '<br>С пробелами: '+ arr[0];
  result += '<br>Без проблелов: '+arr[1];
  result += '<br>Слов: ' + arr[2];
  result += '<br>Длина,кот. больше двух: ' + arr[3];
  contResult.html(result);
}
var contResult = $('<div />'), nilArr = [0,0,0,0];
  $('#countSimbol > textarea').after(contResult);
  appendResult(nilArr);
function countSimbol(t){
  var textArea = $(t), text = textArea.val(), result = '';
  text = text.replace(/\s+/g,' '); // удалит повторяющиеся пробелы
  text = $.trim(text); // удалит пробелы в начале и конце
if(text.length === 0){
  appendResult(nilArr);
  return;
}
  var textArr = text.split(' ');
  var i = textArr.length,
      q = 0;
  while(i--){
    if(textArr[i].length > 2){
      ++q;
    }
  }
  appendResult([text.length, text.length-(textArr.length-1), textArr.length, q]);
  }
 
Последнее редактирование:
  • Нравится
Реакции: Yulo
Назад
Сверху