このアルゴリズムは、最初の単語に対して実行されるか、エンコードされた4つの文字列がいっぱいになるまで実行されるように設定されています。たとえば、「HorribleGreat」という入力の結果はH612です。2番目の単語を無視します。つまり、エンコードされた文字列を埋めるために2番目の単語の最初の文字だけを使用します。
最初の単語を取得してそのエンコードされた文字列を見つけ、次に2番目の単語を取得してそのエンコードされた文字列を見つけることによって変更したいと思います。出力は「H614G600」である必要があります。親切に私は**このコードにいくつかの変更を行うことによってそれを行う方法があるかどうか知りたいです。
どうもありがとう :)
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();
}