我有兩個字符串。 字符串A:「快速的棕色狐狸」 字符串B:「快速的棕色狐狸跳過懶惰的狗。」Javascript比較字符串並獲得最終差異
字符串B將始終包含字符串逐字。永遠不會有「快黑狐狸」或「快速而快速的棕狐狸」。
如何得到一個「字符串C」的差異「跳過懶狗」。
我有兩個字符串。 字符串A:「快速的棕色狐狸」 字符串B:「快速的棕色狐狸跳過懶惰的狗。」Javascript比較字符串並獲得最終差異
字符串B將始終包含字符串逐字。永遠不會有「快黑狐狸」或「快速而快速的棕狐狸」。
如何得到一個「字符串C」的差異「跳過懶狗」。
你需要交叉檢查每個單詞到另一個。
var s1 = "The quick brown fox",
s2 = "The quick brown fox jumped over the fence",
string1 = new Array(),
string2 = new Array(),
diff = new Array(),
longString;
string1 = s1.split(" ");
string2 = s2.split(" ");
if(s1.length > s2.length)
{
longString = string1;
}
else
{
longString = string2;
}
for(x = 0; x < longString.length; x++)
{
if(string1[x] != string2[x])
{
diff.push(string2[x]);
}
}
document.write("The difference in the strings is " + diff.join(" "));
請參閱下面的基本示例。
這可以很容易地修改/擴展爲不同的行爲。
var string_a = document.getElementById('string_a').innerHTML,
string_b = document.getElementById('string_b').innerHTML,
first_occurance = string_b.indexOf(string_a);
if(first_occurance == -1)
{
alert('Search string Not found');
}
else
{
string_a_length = string_a.length;
if(first_occurance == 0)
{
new_string = string_b.substring(string_a_length);
}
else
{
new_string = string_b.substring(0, first_occurance);
new_string += string_b.substring(first_occurance + string_a_length);
}
document.getElementById('diff').innerHTML = new_string;
}
<p>String A: <span id="string_a">The quick brown fox</span></p>
<p>String B: <span id="string_b">The quick brown fox jumps over the lazy dog</span></p>
<hr/>
<p>Difference: <span id="diff"></span></p>
我曾經是一名計算機科學導師(或在美國,'TA')。這將是我獲得滿分的唯一答案。它應該是被接受的答案。 –
@MichaelScheper我同意,這應該是被接受的答案,我已經格式化爲更好的可讀性,並轉化爲可運行的代碼片段 – doz87
好的,@ doz87!進一步改進的建議:使用身份運算符而不是等號運算符http://stackoverflow.com/questions/359494/which-equals-operator-vs-should-be-used-in-javascript-comparisons和camelCase變量名稱代替一些with_underscores http://www.w3schools.com/js/js_conventions.asp但這些問題都不影響這個答案的正確性和有用性。 –
COMU的回答作爲一個功能...
function compareString(s1, s2, splitChar){
if (typeof splitChar == "undefined"){
splitChar = " ";
}
var string1 = new Array();
var string2 = new Array();
string1 = s1.split(splitChar);
string2 = s2.split(splitChar);
var diff = new Array();
if(s1.length>s2.length){
var long = string1;
}
else {
var long = string2;
}
for(x=0;x<long.length;x++){
if(string1[x]!=string2[x]){
diff.push(string2[x]);
}
}
return diff;
}
compareString("?Yo=dude", "?Yo=Dude&do=roby", "&").join('\n');
compareString("?Yo=Dude", "?Yo=Dude&do=roby", "&").join('\n');
注:這個答案找到解決額外查詢參數的問題(基於另一個查詢字符串)並不是OP的確切答案。
看看這個網站有一個很棒的API來看看字符串之間的區別:google-diff-match-patch 雖然你可能需要根據你的需要來檢查UI。
作業?無論如何,一個簡單的方法是從一個長度變量開始(調用它'l'或者其他)並運行一個循環來查看是否有'strA.substring(0,l)== strB.substring(0,l)'直到它犯規。然後,返回'strB.substring(l);'。 – Alxandr
請發佈您到目前爲止所嘗試的內容。 –
'differenceString = string2.replace(string1,「」);'o_o? –