我怎么能避免将双重空格计为单词?

时间:2012-02-27 14:18:49

标签: javascript jquery jquery-ui

$(document).ready(function() {

    $("[class^='count[']").each(function() {

        var elClass = $(this).attr('class');
        var minWords = 0;
        var maxWords = 0;
        var countControl = elClass.substring((elClass.indexOf('['))+1, elClass.lastIndexOf(']')).split(',');

        if(countControl.length > 1) {

            minWords = countControl[0];
            maxWords = countControl[1];

        } 

        else { maxWords = countControl[0]; }



        $(this).after('<div class="wordCount"><strong>0</strong> words so far</div>');

            if(minWords > 0) {
                                $(this).siblings('.wordCount').addClass('error');
                             }

        $(this).bind('keyup click blur focus change paste', function() {

            var numWords = jQuery.trim($(this).val()).split(' ').length;
                if($(this).val() === '') {
                        numWords = 0;
                    }

        $(this).siblings('.wordCount').children('strong').text(numWords);
            if(numWords < minWords || (numWords > maxWords && maxWords != 0)) {
                $(this).siblings('.wordCount').addClass('error');
                } 
                else {
                    $(this).siblings('.wordCount').removeClass('error');
                }

        });
    });
});

这个脚本基本上计算单词之间的空格,但是如果添加了额外的空格,它也将它们视为新单词......

http://blog.themeforest.net/tutorials/creating-a-jquery-word-counter/

2 个答案:

答案 0 :(得分:9)

.split()也接受正则表达式。试试这个:

var numWords = jQuery.trim($(this).val()).split(/\s+/).length;

答案 1 :(得分:3)

使用Regex删除所有双空格,然后执行脚本。如果没有要找到的双重空格,则无法计算它们。

这是C#中的一个示例,但javascript代码相同:How do I replace multiple spaces with a single space in C#?