Este algoritmo está configurado para ejecutarse sobre la primera palabra o hasta que rellene las cuatro cadenas codificadas. Por ejemplo, el resultado de la entrada "Horrible Great" es: H612. Descuida la segunda palabra, o en otras palabras, solo toma la primera letra de la segunda palabra para completar la cadena codificada.Algunos cambios en el algoritmo de Soundex
Me gustaría cambiarlo tomando la primera palabra y encontrar su cadena codificada y LUEGO tomar la segunda palabra y encontrar su cadena codificada; la salida debe ser "H614 G600". Amablemente me gustaría saber si hay una manera de hacer eso haciendo un cambio a ** este código.
Muchas gracias :)
private string Soundex(string data)
{
StringBuilder result = new StringBuilder();
if (data != null && data.Length > 0)
{
string previousCode = "", currentCode = "", currentLetter = "";
result.Append(data.Substring(0, 1));
for (int i = 1; i < data.Length; i++)
{
currentLetter = data.Substring(i,1).ToLower();
currentCode = "";
if ("bfpv".IndexOf(currentLetter) > -1)
currentCode = "1";
else if ("cgjkqsxz".IndexOf(currentLetter) > -1)
currentCode = "2";
else if ("dt".IndexOf(currentLetter) > -1)
currentCode = "3";
else if (currentLetter == "l")
currentCode = "4";
else if ("mn".IndexOf(currentLetter) > -1)
currentCode = "5";
else if (currentLetter == "r")
currentCode = "6";
if (currentCode != previousCode)
result.Append(currentCode);
if (result.Length == 4) break;
if (currentCode != "")
previousCode = currentCode;
}
}
if (result.Length < 4)
result.Append(new String('0', 4 - result.Length));
return result.ToString().ToUpper();
}
¡SON INCREÍBLES! Muchas gracias por compartir. me permite editar el código que escribió más arriba: cadena privada SoundexByWord (datos de cadena) {var = soundexes nueva lista(); foreach (var str en data.Split ('')) { soundexes.Add (Soundex (str)); } return string.Join ("", soundexes.ToArray()); // Convierte la lista } // a una matriz coz join Fun. takes string array [] :) –
user979014
Ese es un buen punto. La respuesta original se basó en .Net 4. En función de su sugerencia, amplié la respuesta para incluir versiones anteriores también. – jhamm
Admiro tu última edición y manera de explicar :) gracias de nuevo – user979014