Vin校驗

  private static Dictionary kvDic = new Dictionary{
            {'0', 0},
            {'1', 1},
            {'2', 2},
            {'3', 3},
            {'4', 4},
            {'5', 5},
            {'6', 6},
            {'7', 7},
            {'8', 8},
            {'9', 9},
            {'a', 1},
            {'b', 2},
            {'c', 3},
            {'d', 4},
            {'e', 5},
            {'f', 6},
            {'g', 7},
            {'h', 8},
            {'j', 1},
            {'k', 2},
            {'l', 3},
            {'m', 4},
            {'n', 5},
            {'p', 7},
            {'q', 8},
            {'r', 9},
            {'s', 2},
            {'t', 3},
            {'u', 4},
            {'v', 5},
            {'w', 6},
            {'x', 7},
            {'y', 8},
            {'z', 9}
        };

        private static int[] wvArr = { 8, 7, 6, 5, 4, 3, 2, 10, 9, 8, 7, 6, 5, 4, 3, 2 };

        //校驗車架號
        public static bool CheckVinT(string vin)
        {
            if (vin == null || vin.Length != 17) return false;
            vin = vin.ToLower();
            int code;
            if (!int.TryParse(vin.Substring(8, 1).Replace("x", "10"), out code)) return false;
            try
            {
                return code == vin.Remove(8, 1).Select((p, i) => kvDic[p] * wvArr[i]).Sum() % 11;
            }
            catch
            {
                //vin中如果出現不包含在kvDic鍵中的字符時,返回false
                return false;
            }
        }
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章