【问题标题】:Test if input values match constant value测试输入值是否与常量值匹配
【发布时间】:2012-10-05 06:00:06
【问题描述】:

我有一个任务,有点卡住了。

需要将输入字符串与常量中的值进行匹配,但我正在匹配单个字符。

我的常量是ALPHABET = 'ABCDEFGHIJKLMNOPQRSTUWXYZ'

我的输入是,var input = 'ABOZ'

我需要一个测试来检查输入变量中的每个字母是否存在于 ALPHABET 常量中。

希望我说得通。

干杯

【问题讨论】:

  • 我对输入字符串进行了 .search 但我只能匹配常量中的字母是否按顺序排列,我无法按任何顺序匹配,只会抛出错误。
  • 贴出你的代码让我们看看
  • @MarkWalters 这只是一些测试代码... ALPHABET = "ABCDEFGHIJKLMNOPQRSTUVWXYZ" inputTest = "ABBC" var n=ALPHABET.search(inputTest);警报(n);

标签: javascript string testing variable-assignment


【解决方案1】:

以下是您问题的单行答案:

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

仅当input 中的所有字符都存在于ALPHABET 中时才会返回true

这是一个工作演示 http://jsfiddle.net/kayen/akL4A/

【讨论】:

    【解决方案2】:

    下面是一个函数示例,该函数将返回 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
    

    DEMO

    【讨论】:

      【解决方案3】:

      在 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;
          }
      

      【讨论】:

        【解决方案4】:

        一种方法是循环输入并搜索它是否存在于常量中

        可能的代码

        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");       
        }
        

        Demo

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多