2010-11-01 87 views
5

¿Hay bibliotecas por ahí que hagan que sea fácil comparar la "similitud" de 2 cadenas en C#? Lo que estoy pensando es si usted tiene las cuerdas,Prueba de comparación "similitud" de cadena C#

"This is a test" // 100% 
"THIS IS A TEST" // 95% 
" This is a test" // 98% 
"This is" // 60% 
"Foobar" // 0% 
"this test is a" // 70% 

etc. cada uno seria dan una puntuación en comparación con una cadena de base.

+1

definir la similitud ... un poco más en concreto, el enfoque general se http://en.wikipedia.org/wiki/Longest_common_subsequence_problem –

+7

http://en.wikipedia.org/wiki/Levenshtein_distance –

+0

Esa distancia Levenshtein suena interesante . Puse "similitud" entre comillas porque no estoy seguro de cómo definirlo. Será una cuestión de probar cada método para ver cuál tiene la mejor tasa de ataque para mi situación. – mike

Respuesta

3

Eche un vistazo a Levenstein.

La distancia de Levenshtein es la diferencia entre dos cadenas. Lo uso en una aplicación web de rastreo para comparar las versiones nuevas y antiguas de una página web. Si ha cambiado lo suficiente, lo actualizo en mi base de datos.

CodeProject tiene una implementación de esto en http://www.codeproject.com/KB/recipes/Levenshtein.aspx.