Thuật toán này được đặt để chạy trên từ đầu tiên hoặc cho đến khi điền vào bốn chuỗi được mã hóa. Ví dụ, kết quả của đầu vào "Horrible Great" là: H612. Nó bỏ qua từ thứ hai, hay nói cách khác nó chỉ lấy chữ cái đầu tiên từ từ thứ hai để điền vào chuỗi được mã hóa.Một số thay đổi trên Thuật toán Soundex
Tôi muốn thay đổi nó bằng cách lấy từ đầu tiên và tìm chuỗi được mã hóa của nó và THEN lấy từ thứ hai và tìm chuỗi được mã hóa của nó; đầu ra phải là "H614 G600". Vui lòng tôi muốn biết nếu có cách nào để làm điều đó bằng cách thực hiện một số thay đổi thành ** mã này.
Cảm ơn bạn rất nhiều :)
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();
}
BẠN ĐANG TUYỆT VỜI! Cảm ơn bạn rất nhiều vì đã chia sẻ. cho phép tôi để chỉnh sửa mã bạn đã viết ở trên: private string SoundexByWord (dữ liệu string) {var soundexes = new List(); foreach (var str in data.Split ('')) { soundexes.Add (Soundex (str)); } chuỗi trả về.Join ("", soundexes.ToArray()); // Chuyển đổi } // danh sách thành một mảng coz tham gia Fun. lấy chuỗi mảng [] :) –
user979014
Đó là một điểm tốt. Câu trả lời ban đầu được dựa trên .Net 4. Dựa trên đề xuất của bạn, tôi đã mở rộng câu trả lời để bao gồm các phiên bản trước đó. – jhamm
Tôi ngưỡng mộ chỉnh sửa cuối cùng của bạn và cách giải thích :) cảm ơn một lần nữa – user979014