0

課題があり、少し行き詰まっています。

入力文字列を定数の値に一致させる必要がありますが、個々の文字を一致させています。

私の定数はALPHABET = 'ABCDEFGHIJKLMNOPQRSTUWXYZ'

私の入力は、var input = 'ABOZ'

入力変数の各文字が ALPHABET 定数に存在するかどうかを確認するテストが必要です。

私が理にかなっていることを願っています。

乾杯

4

4 に答える 4

3

これがあなたの質問に対する一行の答えです:

(ALPHABET.match(new RegExp((input.split('').join('|')), 'g'))).length == input.length

trueのすべての文字inputがに​​存在する場合にのみ返されますALPHABET

これが実用的なデモですhttp://jsfiddle.net/kayen/akL4A/

于 2012-10-15T09:41:46.630 に答える
0

Firefox 16 でテスト済みで動作します。この実装では、入力が null かどうか、またはその他の防御チェックが検証されないことに注意してください。自分でやるべきです。これは大文字と小文字を区別する結果です。

大文字小文字を区別しません :

    function validInput(input) {
        var ALPHABET = "ABCDEFGHIJKLMNOPQRSTUWXYZ";
        for (var i = 0; i < input.length; i++) {
            var charAtI = input.charAt(i);
            var indexOfCharAtI = ALPHABET.indexOf(charAtI);
            if (indexOfCharAtI < 0) {
                return false;
            }
        }
        return true;
    }

大文字小文字を区別しません :

    function validInput(input) {
        var ALPHABET = "ABCDEFGHIJKLMNOPQRSTUWXYZ";
        for (var i = 0; i < input.length; i++) {
            var charAtI = input.charAt(i);
            charAtI = charAtI.toUpperCase();
            var indexOfCharAtI = ALPHABET.indexOf(charAtI);
            if (indexOfCharAtI < 0) {
                return false;
            }
        }
        return true;
    }
于 2012-10-15T09:36:11.690 に答える
0

一致の場合は true、不一致の場合は false を返す関数の例を次に示します。(これは大文字と小文字を区別するテストであることに注意してください)。

var ALPHABET = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ';
var input = 'ABOZ';

function testStr(str, constant){
  var matchFlag = true;
  var strSplit = str.split("");
  for(var i=0; i<strSplit.length;i++){
    if(constant.indexOf(strSplit[i]) == -1){
       matchFlag = false;
    }
  }
  return matchFlag;
} 
alert(testStr(input, ALPHABET)); //TRUE

デモ

于 2012-10-15T09:36:12.583 に答える
0

1 つの方法は、入力をループして、定数に存在するかどうかを検索することです。

可能なコード

var ALPHABET = 'ABCDEFGHIJKLMNOPQRSTUWXYZ';
var input = 'ABOZ'
var count = 0;  
    for(x in input) {
        if(ALPHABET.indexOf(input[x])>-1){
            count++;
            continue;
        }
        else{
            break;
        }

    }
if(count==input.length) {
    alert("true");       
}

デモ

于 2012-10-15T09:34:50.233 に答える