javascript - 比较2个句子并获取不同单词的索引

标签 javascript jquery regex

我有一个contenteditable分区

<div id="editableDiv" contenteditable="true">
    hey @twitter is #
</div>

一旦用户输入 # ,我将其html内容收集为$('#editableDiv').html()
采集的html内容(1):<b>hey</b> <span style="color:blue">@twitter</span> #

当用户输入下一个紧邻空格时,我将再次收集其 html 内容
采集的html内容(2):<b>hey</b> <span style="color:blue">@twitter</span> #awesome

现在,想计算(1)和(2)之间的差异并获得不同单词的索引。 据此,awesome是 (1) 和 (2) 中唯一不同的单词,因此其起始索引必须为 53,结束索引必须为 60。

我怎样才能完成这个工作。

编辑

这是我在用户输入 # 时调用的函数或space bar

getCaretPosition : function(){
            var element = this.$el[0];
            var caretOffset = 0;
           if (typeof window.getSelection != "undefined") {
                var range = window.getSelection().getRangeAt(0);
                var preCaretRange = range.cloneRange();
                preCaretRange.selectNodeContents(element);
                preCaretRange.setEnd(range.endContainer, range.endOffset);
                caretOffset = preCaretRange.toString().length;
            } else if (typeof document.selection != "undefined" && document.selection.type != "Control") {
                var textRange = document.selection.createRange();
                var preCaretTextRange = document.body.createTextRange();
                preCaretTextRange.moveToElementText(element);
                preCaretTextRange.setEndPoint("EndToEnd", textRange);
                caretOffset = preCaretTextRange.text.length;
            }
            return caretOffset;
        }

最佳答案

一个非常基本的解决方案:

$('#editableDiv').on('keyup', function (event) {

    var innerHTML = $(this).html();
        matches = {},
        startIndex = 0;

    if (event.which === 32) {
        innerHTML.match(/#[^ ]+/g).forEach(function (match) {
            startIndex = innerHTML.indexOf(match, startIndex);
            matches[match] = startIndex;
        });
        console.log(matches);
    }
});

http://jsfiddle.net/4PLJa/5/

关于javascript - 比较2个句子并获取不同单词的索引,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20879533/

相关文章:

javascript - 语法错误: missing ; before statement with AJAX

Python,根据路径创建文件名并替换反斜杠

java - 匹配整个 Java 异常堆栈跟踪的正则表达式

javascript - 当我将 Node.js https 服务器分成两个文件时,它无法工作

javascript - 在 django 1.7 中包含静态 js 文件

Javascript "OOP"和具有多级继承的原型(prototype)

jQuery 在 .load() 之后多次调用我的实时 ("keydown") 事件

javascript - $(this).attr ("href") 返回未定义

javascript - 使用 Rollup 仅转换为 CommonJS,而不进行捆绑

sql - Postgresql regexp_replace 'g' 标志