的比較,並刪除部分我有兩個字符串說,例如串
str1 = "The first two have explicit values, but";
str2 = "first two have explicit values, but disabled is empty";
我需要比較兩個字符串,並拿出部分「前兩個有明確的價值觀,但」
我試着使用'匹配',但它返回空值。
有什麼辦法可以用javascript或jQuery來完成這個任務嗎?
的比較,並刪除部分我有兩個字符串說,例如串
str1 = "The first two have explicit values, but";
str2 = "first two have explicit values, but disabled is empty";
我需要比較兩個字符串,並拿出部分「前兩個有明確的價值觀,但」
我試着使用'匹配',但它返回空值。
有什麼辦法可以用javascript或jQuery來完成這個任務嗎?
在字符串中使用replace
:
var match = 'first two have explicit values, but ';
var str1 = 'the first two have explicit values, but';
var str2 = 'first two have explicit values, but disabled is empty';
str1.replace(match, '')
// returns 'the first two have explicit values, but'
str2.replace(match, '')
// returns 'disabled is empty'
注意,如果有字符串中的首都,你將不得不「正常化」他們,這就是爲什麼在第一次檢查實際上返回原始的字符串(因爲沒有匹配)。我建議在這個字符串上使用toLowerCase
。
你是如何派生'match'的? – 31piy
我從我瞭解OP要搜索的內容中得出它 – developius
你可以使用一個簡單的循環遍歷單詞和其他字符組合數組。
var str1 = "The first two have explicit values, but",
str2 = "first two have explicit values, but disabled is empty";
// split two string by word boundary
var arr1 = str1.split(/\b/),
arr2 = str2.split(/\b/);
// initialize variable for result
var str = '';
// iterate over the split array
for (var i = 0; i < arr1.length; i++) {
// check current word includes in the array and check
// the combined word is in string, then concate with str
if (arr2.includes(arr1[i]) && str2.indexOf(str + arr1[i]) > -1)
str += arr1[i];
// if string doesn't match and result length is greater
// than 0 then break the loop
else if (str.trim())
break;
}
console.log(str.trim());
添加你在OP – guradio
嘗試*我嘗試使用「匹配」,但它返回我空值* - 請與我們分享這個代碼,以澄清您的問題。另請參閱[查找一組字符串中最長的公共起始子字符串](http://stackoverflow.com/questions/1916218/find-the-longest-common-starting-substring-in-a-set-of-strings )。 –
是否刪除重複句子的任何部分? – Scriptable