2. 名字編碼

namespace Q2
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void button1_Click(object sender, EventArgs e)
        {
            Dictionary<char, int> map = new Dictionary<char, int>();
            foreach (var item in "B, P, F, V 1\r\nC, S, K, G, J, Q, X, Z 2\r\nD, T 3\r\nL 4\r\nM, N 5\r\nR 6".Split("\r\n"))
            {
                var data = item.Substring(0, item.Length - 2).Replace(", ", "");
                var last = item[item.Length - 1] - '0';
                foreach (var item1 in data.ToCharArray())
                {
                    map[item1] = last;
                }
            }

            var soundex = "";
            foreach (var item in textBox1.Text.Split('\n'))
            {
                bool first = true;
                var son = "";
                char last = item[0];
                foreach (var c in item.ToCharArray())
                {
                    if (first)
                    {
                        son += c;
                        first = false;
                        continue;
                    }

                    if (map.ContainsKey(c) && (!map.ContainsKey(last) || map[last] != map[c]))
                    {
                        son += map[c];
                    }

                    last = c;
                }
                son += "0000000000";
                son = son.Substring(0, 4);

                soundex += son+"\r\n";
            }
            textBox2.Text = soundex;
        }
    }
}

Last updated