Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/403.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript substr();按单词而不是字符限制_Javascript_Jquery_Substr - Fatal编程技术网

Javascript substr();按单词而不是字符限制

Javascript substr();按单词而不是字符限制,javascript,jquery,substr,Javascript,Jquery,Substr,我想用文字而不是字符来限制substr。我在考虑正则表达式和空格,但不知道如何实现 场景:使用javascript/jQuery将一段文字限制在200字以内 var $postBody = $postBody.substr(' ',200); 这是伟大的,但一分为二:)谢谢提前 如果您对不太准确的解决方案感到满意,您可以简单地对文本中的空格字符数进行连续计数,并假设它等于字数 否则,我将对字符串使用split(),并以“”作为分隔符,然后计算split返回的数组的大小。非常快而且脏 $("#

我想用文字而不是字符来限制substr。我在考虑正则表达式和空格,但不知道如何实现

场景:使用javascript/jQuery将一段文字限制在200字以内

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

这是伟大的,但一分为二:)谢谢提前

如果您对不太准确的解决方案感到满意,您可以简单地对文本中的空格字符数进行连续计数,并假设它等于字数

否则,我将对字符串使用split(),并以“”作为分隔符,然后计算split返回的数组的大小。

非常快而且脏

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

我想你也需要考虑标点符号和其他非单词、非空白字符。您需要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
}
var word\u count=0;
var in_word=false;
对于(var x=0;x=200)…在“x”位置剪切字符串
}

您还应该决定是否将数字视为一个单词,以及是否将单个字母视为一个单词。

谢谢各位:)我现在有一个很好的方法来计算数字,但由于我的能力有限,我如何才能接受这些,并吐出一个限制在200字以内的文本?我能够获得空间的总体计数,但不确定如何使用它:)tnx。var$postLength=$postBody.split(/\s/).length您是说,给定一个可能有300个单词长的文本块,您希望得到包含前200个单词的文本块吗?split(“”)将返回单词数组,您只需在其中循环并将数组的前200个元素连接在一起。或者,如果您使用我的不太准确但速度快得多的初始建议,您可以在字符串中循环计算空格字符的数量,当您达到#200时,将子字符串从开始位置移到第200个空格的位置。感谢您的帮助:)下面是我提出的方法:var$I=0;var$maxWords=50;var$postBody=$(“#myDiv”).text().split(“”);而($i<$maxWords){$(“#results”).append($postBody[$i]+”);$i++}看起来它会起作用。确保给它一些好的测试用例,以确保它在一行中有多个空格的情况下按预期工作……我会注意数组上出现越界的可能性。如果postBody的长度小于$maxWords,那么“append($postBody[$i]+”)似乎会在数组达到post-body的长度时超出范围。这与jQuery无关。
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
}