可以在JavaScript中合并两个字符串,以便覆盖所有相似之处

时间:2014-02-18 17:41:51

标签: javascript

是否可以在JavaScript中合并两个字符串,以便保持所有相似之处,只保留差异。

例如

var string1 = "I am a sentence";
var string2 = "I am a dancer";

var string3 = function(string1, string2);
string3 = "I am a sentence dancer";

保留了相似之处,但差异被添加到字符串中。

我问的原因是我有一个网站应用程序,用户可以通过contenteditable编辑页面,也可以通过<textarea></textarea>编辑代码本身。因此,如果他们同时编辑,则会提交两个更改。

3 个答案:

答案 0 :(得分:2)

我希望在编辑内容可编辑时更新textarea数据,并在编辑textarea时更新内容可编辑。这样,您就可以确保为用户保存所有编辑内容。

答案 1 :(得分:0)

我认为它可以作为一种变体。

function merge(str, str2){
    var a = str.split(" ");
    str2.split(" ").forEach(function(i, index){
        var len = a.filter(function(item){return item == i;}).length;
        if(len == 0) a.push(i);
    });
    return a.join(" ");
}

console.log(merge("I am a sentence","I am a dancer"));
// result "I am a sentence dancer"

使用demo!

进行游戏

答案 2 :(得分:0)

如果您想要在角色级别(而不仅仅是单词级别)进行合并,那么您需要一个更通用的解决方案。 The levenshtein distance是将一个刺激转换为另一个刺激所需的更改(替换,添加)的数量。例如,试试这个网站 http://andrew.hedges.name/experiments/levenshtein/

有许多levenshten算法示例可以是found on the web。您需要稍微修改它们,不仅要报告两个字符串之间的更改,还要使用它们将两者合并在一起。