TinyMCE:wordcount插件不将特殊字符计为单词

时间:2016-08-24 19:39:17

标签: tinymce

我添加了插件wordcount来计算在我的TinyMCE短信服务器中输入的字数。

plugins: "wordcount",
wordcount_cleanregex: /[.(),;:!?%#$?\x27\x22_+=\\/\-]*/g

它正在计算字母和数字,但是当我给出一个特殊字符时,它不计算它们。

for e.g ----
Hi I am 18 year old     (for this it is giving me count 6)
Hi I am ## year old     (for this it is giving me count 5)

知道我需要做什么。我试图删除:

    %#$ from wordcount_cleanregex , but it didn't work.

2 个答案:

答案 0 :(得分:0)

您的问题不在于_strdup设置,而在于wordcount_cleanregex设置:

https://www.tinymce.com/docs/plugins/wordcount/#wordcount_countregex

如果你看一下默认的那个,你会看到为什么它会跳过它的字符。这是完全正则表达式:

https://regex101.com/r/wL4fL1/1

如果您调整该正则表达式,则可以将其计为wordcount_countregex一词。

注意:无论您的配置设置如何,都会在##插件中完成一些核心清理工作。在TinyMCE 4.4.1中,它看起来像这样:

wordcount

...因此,无论您在 if (tx) { tx = tx.replace(/\.\.\./g, ' '); // convert ellipses to spaces tx = tx.replace(/<.[^<>]*?>/g, ' ').replace(/&nbsp;|&#160;/gi, ' '); // remove html tags and space chars // deal with html entities tx = tx.replace(/(\w+)(&#?[a-z0-9]+;)+(\w+)/i, "$1$3").replace(/&.+?;/g, ' '); tx = tx.replace(cleanre, ''); // remove numbers and punctuation var wordArray = tx.match(countre); if (wordArray) { tc = wordArray.length; } } wordcount_cleanregex中添加了什么内容,您的内容仍然会被删除。如果要更改此核心行为,则需要修改插件的源代码。

答案 1 :(得分:0)

这是我的wordcount插件,我在外部添加,函数getCount在我的.aspx页面上作为javascript函数分别运行此函数时,返回完美的单词数,但是当我在这个插件下运行时,它只是计数字母(不计算任何数字/特殊字符)

tinymce.PluginManager.add('wordcount', function(editor) {

function update() {
    editor.theme.panel.find('#wordcount').text(['Words: {0}', getCount()]);
}

editor.on('init', function() {
    var statusbar = editor.theme.panel && editor.theme.panel.find('#statusbar')[0];

    if (statusbar) {
        tinymce.util.Delay.setEditorTimeout(editor, function() {
            statusbar.insert({
                type: 'label',
                name: 'wordcount',
                text: ['Words: {0}', getCount()],
                classes: 'wordcount',
                disabled: editor.settings.readonly
            }, 0);

            editor.on('setcontent beforeaddundo', update);

            editor.on('keyup', function(e) {
                if (e.keyCode == 32) {
                    update();
                }
            });
        }, 0);
    }
});

getCount = function () {        
    var body = editor.getBody().innerHTML;
    text1 = body.replace(/<[^>]+>/g, '');
    s = text1.replace(/&nbsp;/g, ' ');
    s = s.replace(/(^\s*)|(\s*$)/gi, "");//exclude  start and end white-space
    s = s.replace(/[ ]{2,}/gi, " ");//2 or more space to 1
    s = s.replace(/\n /, "\n"); // exclude newline with a start spacing
    return s.split(' ').length;

};
});