字符串字数不使用正则表达式?

时间:2016-04-17 07:41:43

标签: javascript string

我正试图找出一种有效的方法来为JavaScript中的给定字符串进行字数统计,而不使用正则表达式。

以下适用于某些字符串:

function wordCount(str) { 
  return str.split(" ").length;
}

console.log(wordCount("howdy there partner"));

然而 - 当给出一个字符串,“这是一个例子”时,字数变为6而不是4.此外,这种方法不适用于空字符串,如“”或“”(将返回字数)分别为1和2)。

在没有使用正则表达式的情况下,有没有办法为这些实例进行准确的字数统计?

3 个答案:

答案 0 :(得分:5)

只需filter空白值:

function wordCount(str) {
    return str.split(' ').filter(function(val){ return val != '' }).length
}

答案 1 :(得分:2)

如果您愿意放宽使用正则表达式的限制,可以直接执行此操作,而无需使用split

sentence.match(/\w+/g).length

这意味着匹配任何字符序列(\w)的长度为一个或多个(+),全局(g)。它将返回一个匹配数组,其长度将给出单词数。

为了防止字符串中没有单词且match将返回null的情况,您应该写一下:

(sentence.match(/\w+/g) || []).length

仍然比替代

短几个字符
sentence.split(' ').filter(Boolean).length

如果你担心这些事情。

答案 2 :(得分:0)

function wordCount(str) { 
  return str.trim().split(" ").length;
}

console.log(wordCount("howdy there partner"));