Javascript substr (); ограничение по слову не символ - PullRequest
3 голосов
/ 02 ноября 2009

Я хотел бы ограничить подстроку словами, а не символами. Я думаю о регулярном выражении и пробелах, но не знаю, как это осуществить.

Сценарий: ограничьте абзац слов до 200 слов, используя javascript / jQuery.

var $postBody = $postBody.substr(' ',200); 

Это здорово, но разбивает слова пополам :) Заранее спасибо!

Ответы [ 4 ]

10 голосов
/ 28 марта 2011
function trim_words(theString, numWords) {
    expString = theString.split(/\s+/,numWords);
    theNewString=expString.join(" ");
    return theNewString;
}
4 голосов
/ 02 ноября 2009

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

В противном случае я бы использовал split () для строки с "" в качестве разделителя, а затем посчитал бы размер массива, который возвращает split.

1 голос
/ 28 марта 2011

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

var word_count = 0;
var in_word = false;

for (var x=0; x < text.length; x++) {
   if ( ... text[x] is a letter) {
      if (!in_word) word_count++;
      in_word = true;
   } else {
      in_word = false;
   }

   if (!in_word && word_count >= 200) ... cut the string at "x" position
}

Вам также следует решить, будете ли вы считать цифры словом, и будете ли вы рассматривать отдельные буквы как слово.

1 голос
/ 02 ноября 2009

очень быстро и грязно

$("#textArea").val().split(/\s/).length
...