Questo algoritmo è impostato per eseguire la prima parola o finché non riempie le quattro stringhe codificate. Ad esempio, il risultato dell'input "Orribile Grande" è: H612. Trascura la seconda parola, o in altre parole prende solo la prima lettera dalla seconda parola per riempire la stringa codificata.Alcune modifiche su Soundex Algorithm
Mi piacerebbe cambiarlo prendendo la prima parola e trovare la sua stringa codificata e POI prendere la seconda parola e trovare la sua stringa codificata; l'uscita dovrebbe essere "H614 G600". Gentilmente mi piacerebbe sapere se c'è un modo per farlo modificando questo codice ** .
Grazie mille :)
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();
}
SEI INCREDIBILE! Grazie mille per la condivisione. mi permettono di modificare il codice che hai scritto sopra: private string SoundexByWord (string data) {var soundexes = new List(); foreach (var str in data.Split ('')) { soundexes.Add (Soundex (str)); } return string.Join ("", soundexes.ToArray()); // Converti l'elenco } // in un array coz unisciti a Fun. prende array di stringhe [] :) –
user979014
Questo è un buon punto. La risposta originale era basata su .Net 4. Sulla base del tuo suggerimento ho ampliato la risposta includendo anche le versioni precedenti. – jhamm
Ammiro la tua ultima modifica e il modo di spiegare :) grazie ancora – user979014