Праверце радок ўтрымліваюць, як шмат слоў у JavaScript

Я хацеў бы праверыць, колькі слоў у радку

напрыклад.

 asdsd sdsds sdds 

3 словы

Праблема заключаецца ў тым, калі ёсць больш чым адзін прабел паміж двума падрадка, вынік не з'яўляецца правільным

вось мая праграма

function trim(s) {   
  return s.replace(/^\s*|\s*$/g,"")   
} 

var str = trim(x[0].value);
var parts = str .split(" ");
alert (parts.length);

Як вырашыць гэтую праблему? дзякуй за дапамогу

2

6 адказы

Вы можаце проста выкарыстоўваць матч з межамі словы:

var words = str.match(/\b\w+\b/g);

http://jsbin.com/abeluf/1/edit

2
дададзена
var parts = str .split(" ");
parts = parts.filter(function(elem, pos, self) {
     return elem !== "";
});

Калі ласка, паспрабуйце гэта. Пераканайцеся, што вы карыстаецеся апошнюю версію браўзэра, каб выкарыстаць гэты код.

2
дададзена

Калі ласка, выкарыстоўвайце гэты адзін яго ўжо які выкарыстоўваецца мной у маім праекце:

function countWords(){
    s = document.getElementById("inputString").value;
    s = s.replace(/(^\s*)|(\s*$)/gi,"");
    s = s.replace(/[ ]{2,}/gi," ");
    s = s.replace(/\n /,"\n");
    document.getElementById("wordcount").value = s.split(' ').length;
}
1
дададзена

Гэта лёгка высветліць з дапамогай падзелу метад, але вам трэба разабрацца, калі ёсць якія-небудзь спецыяльныя сімвалы. Калі вы не маеце спецыяльныя сімвалы ў радку, то апошняя радок дастаткова для працы.

s = document.getElementById("inputString").value;
s = s.replace(/(^\s*)|(\s*$)/gi,"");
s = s.replace(/[ ]{2,}/gi," ");
s = s.replace(/\n /,"\n");
document.getElementById("wordcount").value = s.split(' ').length;
1
дададзена

Яшчэ карацей шаблон, паспрабаваць нешта накшталт гэтага:

(\S+)

і колькасць матчаў вярнуцца на рэгулярных выразаў будзе ваш жаданы вынік.

0
дададзена

паспрабаваць:

function trim(s) {   
  return s.replace(/^\s*|\s*$/g,"")   
} 
var regex = /\s+/gi;
var value = "this ss ";
var wordCount = value.trim().replace(regex, ' ').split(' ').length;
console.log( wordCount );
0
дададзена