2013-09-13 2 views
-3

Мне нужно найти нет. подобных символов между двумя строками с помощью JS/PHPкак его найти. похожих символов в двух строках в javascript

Пример str1: Mack str2: Мишель

Подобные символы: "M" "C" похож количество символов: 2

+0

Вы что-то попробовали? –

+0

Я пробовал в PHP, Similar_text() Но это неточно. –

+3

Вам нужно приложить больше усилий, если ничего не работает, а затем попытайтесь создать свою собственную вещь, затем вернитесь с кодом, который не удался, отправьте пример, чтобы воспроизвести проблему и объяснить, что вы пытались ее решить. – elclanrs

ответ

1

После вашей точности, вот мое решение:

str1 = str1.toUpperCase(); 
str2 = str2.toUpperCase(); 
var counter = 0, find = -1; 
for(var i = 0; i < str1.length; i++) 
{ 
    find = str2.indexOf(str1.charAt(i)); 
    if(find > -1) 
    { 
     counter++; 
     str2 = str2.substr(0, find) + str2.substr(find + 1); 
    } 
} 
alert("Result: "+counter); 

Он работает с 2 примера вы дали нам:

Michellle и Мишель = 8 снеха и naveen = 3

1

Я сделаю это:

str1 = str1.toUpperCase(); 
str2 = str2.toUpperCase(); 
var counter = 0; 
var min = Math.min(str1.length, str2.length); 
for(var i = 0; i < min; i++) 
{ 
    if(str1.charAt(i) === star2.charAt(i)) 
     counter++; 
} 
alert("Result: "+counter); 
+0

Используйте toLowerCase, если вы хотите определить «C». –

+0

Редактировал его, когда вы отправили свое сообщение. Я использовал toUpperCase :) – Scalpweb

+0

Это не будет правильно .. Зацикливание только до конца более короткой строки будет игнорировать символы, которые на самом деле важны. (Т.е. «zzzy» «yyy» не обнаружит, что «y» находится в обеих строках.) –

0

Использование similar_text() функция

<?php 
    echo "character count: ". similar_text("Mack","Michelle"); 
?> 

Выход

character count: 2 
+0

Неэффективен, иногда они не дают вам точного подсчета. –

+0

Можете ли вы сказать мне, как? –

+0

если вы попробуете Sneha и naveen. эхо "количество символов:".similar_text ("снех", "Навин"); Это должно быть эхо: 3 Но это echo's 2 –

0

Мне понадобится mor e, чтобы убедиться, что это работает, но с использованием регулярных выражений может сработать для вас:

function similar_text_regex(str1, str2){ 
    var regEx = new RegExp('['+str2+']', 'gi'); 
    var matchCnt = str1.match(regEx2).length; 
    return matchCnt; 
} 

console.log(similar_text_regex('Michelle', 'Michellle')); // --> 8 
console.log(similar_text_regex('Jason', 'Jane')); // --> 3 
console.log(similar_text_regex("sneha","naveen")); // --> 3 
+0

Он сказал, что для Микелл и Мишель он должен вернуться 8. – Scalpweb

+0

Теперь нужно исправить. Я просто подумал, что если совмещение слева направо и справа налево даст лучшие результаты .. –

Смежные вопросы