例如,Hello World!
和Hi World!
- 第一個出現的差異是第二個字符。 JavaScript/jQuery函數是什麼?如何找出第一次出現的兩個字符串之間的區別的位置?
6
A
回答
0
function strDiff(first, second) {
if(first==second)
return -1;
first = first.toString();
second = second.toString();
var minLen = min(first.length,second.length);
for(var i = 0; i<minLen; i++) {
if(first.charAt(i) != second.charAt(i)) {
return i;
}
}
return minLen;
}
返回-1,如果字符串不不同,或者(開始於0)的索引在該他們做的字符(這是最短的字符串的長度,如果他們僅由具有不同的長度不同,例如,「ABCD」和「ABCDEF」將返回4
1
也許這樣的事情?它返回,按順序,第一 區別,如果有任何的位置,最短字符串的長度,如果這些都是不同的,或-1如果一切都相等
function findDiff(a, b) {
a = a.toString();
b = b.toString();
for (var i = 0; i < Math.min(a.length, b.length); i++) {
if (a.charAt(i) !== b.charAt(i)) { return i; }
}
if (a.length !== b.length) { return Math.min(a.length, b.length); }
return -1;
}
感謝菲爾的建議!
2
假設,像其他的答案,即匹配字符串返回-1
:
// Find common prefix of strings a and b.
var prefix = function(a,b){
return a && a[0] === b[0] ? a[0] + prefix(a.slice(1), b.slice(1)) : '';
};
// Find index of first difference.
var diff = function(a,b){
return a===b ? -1 : prefix(a,b).length;
};
var tests = [
['Hello World!', 'Hi World!'],
['aaabab', 'aaabzbzz'],
['', ''],
['abc', 'abc'],
['qrs', 'tu'],
['abc', ''],
['', 'abc']
];
console.log('diff', tests.map(test => diff(test[0], test[1])));
// Or just count up to the first difference
// Trickier nested ternary to handle the -1 however.
var diff2 = function(a,b){
return a === b ? -1 : a[0] === b[0] ? 1 + diff2(a.slice(1), b.slice(1)) : 0;
};
console.log('diff2', tests.map(test => diff2(test[0], test[1])));
0
function firstDiff(a, b) {
var i = 0;
while (a.charAt(i) === b.charAt(i))
if (a.charAt(i++) === '')
return -1;
return i;
}
返回位置,其中兩個字符串a和b不同第一或-1,如果它們是等於。
一個更有效,但不易閱讀的版本:
function firstDiff(a, b) {
for (var i = 0, c; (c = a.charAt(i)) === b.charAt(i); ++i)
if (c === '')
return -1;
return i;
}
如果你覺得你應該首先字符串化的參數,然後做它在調用:
firstDiff(toString(a), toString(b))
大多數情況下,這將是一個浪費時間。瞭解你的數據!
相關問題
- 1. 查找字符串中第一次出現子串的位置
- 2. PHP找到兩個字符串之間的值第二次出現的值
- 3. 找到兩個字符串之間不同的第一個字符位置
- 4. Python。如何編寫一個函數來查找字符串中第一次出現子字符串的位置?
- 5. 確定MySQL中第一次出現字符串的位置?
- 6. Bash:從第一次出現的字符到第二次出現的字符串
- 7. PHP替換字符串的第一次出現,從第0位
- 8. PHP替換字符串中第一次出現的第n個位置
- 9. 如何找到字符串中第一次出現的字符串
- 10. 如何在python字符串中找到第一次出現的子字符串?
- 11. 查找兩個字符串之間的多個區別
- 12. 如何在第一次出現字符時將字符串拆分爲兩個
- 13. 根據字符串中的第一個字符查找字符串列表中第一次出現的元素
- 14. 查找字符串「出現兩次,一個字母」
- 15. 如何獲取第n次出現的單詞之間的子字符串。
- 16. 查找所有子字符串的出現次數和位置
- 17. 如何在第一次出現的東西上分割出一個字符串?
- 18. 如何找到兩個日期時間字符串的區別?
- 19. 第一次替換字符串中出現的字符串VB.NET
- 20. 如何查找兩個字符串之間的第二個字符串
- 21. 第一次出現分割字符串
- 22. 如何返回字符串中出現兩次的單詞的位置?
- 23. 更換前兩個出現的「&」字符之間的串
- 24. 如何在第一次出現字符後分割字符串?
- 25. 如何更改字符串中第一次出現的單詞
- 26. 查找兩個字符串之間的差異位置
- 27. 只替換一個字符串的第一次出現?
- 28. 獲取字符串中第一個出現的多個字符串之一
- 29. 如何計算第一次字符串出現的次數字符串還有第二次字符串出現的次數?
- 30. 如何找到兩個字符串之間的子字符串?
如果他們在第一個字符不同,你會得到0,但如果字符串完全匹配,你會得到0.我會返回-1,如果他們匹配。另外,如果b比a短,你會迭代b的結尾,這是不必要的和不明智的 - 也許迭代到兩個長度中的最小值。 – 2011-04-18 06:28:26
@菲爾非常好的一點。我把答案寫在了我的頭上,它顯然有一些缺點。我會相應地編輯它。 – Aleadam 2011-04-18 06:33:17