java - 如何验证伊朗法人的国民身份 (Shenaseye Melli)
解决方案
这是一个这样做的功能:
private boolean validateNationalOrgId(String nationalNo) {
int[] MULT = {29, 27, 23, 19, 17, 29, 27, 23, 19, 17};
int length = nationalNo.length();
if (StringUtils.isNumeric(nationalNo) && length == 11) {
char[] chars = nationalNo.toCharArray();
int checkDigit = Character.getNumericValue(chars[length - 1]);
int delta = 0;
int tensPlusTwo = Character.getNumericValue(chars[length - 2]) + 2;
for (int i = 0; i < length - 1; i++) {
delta += ((Character.getNumericValue(chars[i]) + tensPlusTwo) * MULT[i]);
}
int remain = delta % 11;
remain = remain == 10 ? 0 : remain;
return remain == checkDigit;
}
return false;
}
推荐阅读
- java - 来自 MainActivity 的片段中的 bundle 给出的 null
- bulma - 布尔玛级别的课程不会向右
- regex - 如何编写正则表达式以从特定单词中提取前几个字符而不带或不带结束分隔符?
- sql - 为匹配条件的表中的每个值插入
- elixir - 带有 do-block 的关键字参数
- omnet++ - OMNET++:如何在 INET 4.0 的离散 NxN 空间中移动节点?
- php - 在 codeigniter 中逃避了足够的 sql 注入保护
- r - 生成矩阵,其中每个新列是前一列的倍数
- c++ - 一对 C++ 交换方法的优点是什么?
- javascript - 动态增加字体大小