0

JavaScript を使用してシンガポールの NRIC を検証したいのですが、式は次のとおりです。

1) たとえば、NRIC 番号 S1234567 をテストしたいとします。最初の桁に 2 を掛け、2 番目に 7 を掛け、3 番目に 6 を掛け、4 番目に 5 を掛け、5 番目に 4 を掛け、6 番目に 3 を掛け、7 番目に 2 を掛けます。したがって、1×2+2×7+3×6+4×5+5×4+6×3+7×2=106です。

2) NRIC の最初の文字が T または G で始まる場合は、合計に 4 を追加します。

3) 次に、その数を 11 で割り、余りを求めます。106/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

数式を実行するためにすべての数値を読み取るにはどうすればよいですか? 前もって感謝します!

4

3 に答える 3

1
string.charAt(charpos)

トリックを行う必要があります。

あるいは、

string.substr(charpos,1)

あなたもできる

string[charpos]

ただし、上記の最初の 2 つをお勧めします。これはundefined、文字列が空の場合に返されますが、他の選択肢はすべて null 文字列を返します。

もう一つのアイデアは

string.split("")[charpos]

最後に、

string.slice(charpos,1)

一度に 1 つの文字が必要な場合は、 をお勧めしcharAtます。

于 2012-07-08T04:31:53.163 に答える
1

文字列は配列であるため、文字列が固定長であることがわかっていると仮定して文字に変数を割り当てることができます。そのように表示され、文字を評価して正しいことを行う関数を作成します。

var nric = 'S1234567'
var chars = {
  letter: nric[0],
  one: nric[1],
  ...
}
于 2012-07-08T04:47:37.337 に答える
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');
}

多かれ少なかれトリックを行う必要があります。私は信じます、あなたは自分で掛け算をすることができます:-)

于 2012-07-08T08:31:30.697 に答える