我想使用javascript验证新加坡NRIC, 公式是
1)例如,我想测试NRIC编号S1234567。第一个数字乘以2,第二个数字乘以7,第三个数字乘以6,第四个乘以5,第五个数字乘以4,第六个乘以3,第七个乘以2.然后将总数相加。所以,1×2 + 2×7 + 3×6 + 4×5 + 5×4 + 6×3 + 7×2 = 106。
2)如果NRIC的第一个字母以T或G开头,则将总数加4。
3)然后你将数字除以11并得到余数。一十一分之一百〇六= 9r7
4)您可以使用以下代码根据IC类型(IC中的第一个字母)获取字母表: 如果IC以S或T开始:0 = J,1 = Z,2 = I,3 = H,4 = G,5 = F,6 = E,7 = D,8 = C,9 = B,10 = A 如果IC以F或G开始:0 = X,1 = W,2 = U,3 = T,4 = R,5 = Q,6 = P,7 = N,8 = M,9 = L,10 = K
如何读取每个数字来执行公式? 提前谢谢!
答案 0 :(得分:1)
string.charAt(charpos)
应该做的伎俩。
可替换地,
string.substr(charpos,1)
您也可以
string[charpos]
但建议使用上面的前两个。如果字符串为空,这将返回undefined
,而其他替代方法将返回空字符串。
另一个想法是
string.split("")[charpos]
最后,还有
string.slice(charpos,1)
由于您一次只需要一个字符,我建议使用charAt
。
答案 1 :(得分:1)
字符串是数组,因此您可以为字母分配变量,假设您知道字符串具有固定长度,它就是这样,然后创建一个函数来评估字符并执行正确的操作:
var nric = 'S1234567'
var chars = {
letter: nric[0],
one: nric[1],
...
}
答案 2 :(得分:0)
阐述@elclanrs回答:
var nric = 'S1234567'
var numVal = 0; for(var i = 1, bound = nric.length; i < bound; i++){
numVal += parseInt(nric[i]);
}
if(nric[0] === 'S' && numVal === 28){
alert('ok');
}else{
alert('wrong');
}
应该或多或少地做这个伎俩。 我相信,你可以自己成倍增长: - )