-3
任何人都可以將字符串的delta編碼的代碼。Delta編碼 - 字符串(編程邏輯 - 沒有特定的語言)
例如,如果初始字符串
「貓和狗」
和後來的字符串是
「貓和狗」
我應該能夠獲得字符串版本之間的區別非常有效。如果任何人都可以將代碼放在這裏,那麼可以用非常少的數據以增量編碼發送非常大的段落。
任何人都可以將字符串的delta編碼的代碼。Delta編碼 - 字符串(編程邏輯 - 沒有特定的語言)
例如,如果初始字符串
「貓和狗」
和後來的字符串是
「貓和狗」
我應該能夠獲得字符串版本之間的區別非常有效。如果任何人都可以將代碼放在這裏,那麼可以用非常少的數據以增量編碼發送非常大的段落。
我找到了答案,我想分享給所有人。
var oldString = "This is just a sample of string to test the delta encoding. Infact, with my own login.dsfdsfdsfdsfsdfsdfdsfdsfsdfsdfds dsfds fds fddsf";
var newString = "dsfdsThissdf is just a sample of string to test X the dedsfdsflta encoding sdfds decoding. Infact, with my own sadsadsadsad"
var result = "";
var changes = getChanges(oldString, newString);
var string = getOriginal(oldString, changes);
function getChanges(os, ns) {
var addedIndex = false;
var changes = [];
var obj = [];
var oi = 0, ni = 0;
while (oi < oldString.length && ni < newString.length) {
if (newString.charAt(ni) != oldString.charAt(oi)) {
if (!addedIndex) {
obj.push(oi);
obj.push(newString.charAt(ni));
addedIndex = true;
}
else {
obj[1] += newString.charAt(ni);
}
ni++;
}
else {
if (addedIndex) {
changes.push(obj);
obj = [];
addedIndex = false;
}
oi++;
ni++;
}
};
if (addedIndex) {
changes.push(obj);
obj = [];
addedIndex = false;
}
obj = [];
if (ni == newString.length) {
obj.push(-1 * oi);
changes.push(obj);
}
if (oi == oldString.length) {
obj.push(ni);
obj.push(newString.substring(ni));
changes.push(obj);
}
return changes;
}
function getOriginal(os, changes) {
var result = os;
for (var i = changes.length - 1; i >= 0 ; i--) {
if (changes[i][0] < 0) {
result = result.substring(0, -1 * changes[i][0]);
}
else {
result = result.substring(0, changes[i][0]) + changes[i][1] + result.substring(changes[i][0]);
}
};
return result;
}
console.log(string);
console.log(newString);
不知道你在問什麼。也許你應該谷歌''差異'..如果這就是你的意思..那麼,這是什麼,但微不足道的,即使它__這樣的人眼!見[這裏](http://stackoverflow.com/questions/24887238/how-to-compare-two-rich-text-box-contents-and-highlight-the-characters-that-are/24970638?s=1 | 0.2755#24970638)在執行中應該明確指出,差異沒有任何「非常有效」,並且沒有人可以或將「在此處放置代碼」。 – TaW
我正在尋找一種邏輯來構建最終字符串舊字符串和三角洲(舊版本和新版本之間的區別)。三角洲的尺寸必須很小,以便我可以輕鬆地轉移大段落。 –
祝你好運。當你有代碼需要幫助時回來.. – TaW