/// <summary> /// 验证集装箱号码是否正确 /// </summary> public class ContaCheck { #region 验证集装箱号码是否正确 /// <summary> /// 验证集装箱号码是否正确 /// </summary> /// <param name="contaNo">集装箱号码</param> /// <returns></returns> public static bool IsChecked(string contaNo) { string contano = contaNo.Substring(0, 10); double num = 0; for (int i = 0; i < contano.Length; i++) { try { num = num + Letter(contano.Substring(i, 1)) * System.Math.Pow(2, i); } catch { return false; } } if (!char.IsNumber(char.Parse((contaNo.Substring(10, 1))))) { return false; } if (int.Parse(contaNo.Substring(10, 1)) == (num % 11)) { return true; } else { FrmMain.pCurrentWin.Show_Message(DateTime.Now.ToString() + "-" + " 最后一位检验位应为:" + num % 11); return false; } } #endregion #region 根据字母返回相应数字 /// <summary> /// 根据字母返回相应数字 /// </summary> /// <param name="letter">字母</param> /// <returns></returns> private static int Letter(string letter) { switch (letter) { case "A": return 10; case "B": return 12; case "C": return 13; case "D": return 14; case "E": return 15; case "F": return 16; case "G": return 17; case "H": return 18; case "I": return 19; case "J": return 20; case "K": return 21; case "L": return 23; case "M": return 24; case "N": return 25; case "O": return 26; case "P": return 27; case "Q": return 28; case "R": return 29; case "S": return 30; case "T": return 31; case "U": return 32; case "V": return 34; case "W": return 35; case "X": return 36; case "Y": return 37; case "Z": return 38; default: return int.Parse(letter); } } #endregion }