首页 > 解决方案 > 检查输入验证 [Javascript]

问题描述

我正在解决一个问题并卡住了,我应该如何验证给定的字符串输入。这是原始问题

在此处输入图像描述

我认为我的方法还可以,但我坚持现在该怎么做。

到目前为止,这是我的尝试:

const solution =(S)=>{
 let validParams = {
   '--count': '--count',
   '--name': '--name',
   '--help': '--help'
 }

let strToTest;
for(k of validParams){

  switch (S.includes(k)) {
    case '--help':
    return 1
    case '--count':
     strToTest = parseInt(S.replace(/--count/g,''))
      return countValidator(strToTest);
    case '--name':
    strToTest = S.replace(/--count/g,'')
      return nameValidator(strToTest);
    default:
      return 1
  }
}
}

const countValidator = (num) =>{
  if(num > 10 && num < 100){
    return 0
  }
}

const nameValidator = (str) =>{
  if(str.length > 3 && str.length < 10){
    return 0
  }
}

这里我也看到了测试用例:

solution('--count g') // -1
solution('-help name') // -1
solution('--name SOME_NAME --COUNT 10') // 0
solution('--count 44') // 0

标签: javascriptstringparsing

解决方案


您需要先将输入拆分为单词,然后测试数组元素。

如果验证成功,您不能立即返回验证器的结果,因为您必须继续测试其他参数。

function solution(S) {
  let params = S.split(/\s+/).map(str => str.toLowerCase()); // \s+ matches any amount of whitespace between parameters
  let result = 0;
  if (params.includes('--help')) {
    result = 1;
  }
  for (let i = 0; i < params.length; i++) {
    switch (params[i]) {
      case "--help":
        break;
      case "--count":
        i++;
        if (i > params.length) {
          result--;
          return result;
        }
        let n = parseInt(params[i]);
        if (isNaN(n) || n < 10 || n > 100) {
          result--;
          return result;
        }
        break;
      case "--name":
        i++;
        if (i > params.length) {
          result--;
          return result;
        }
        let str = params[i];
        if (str.length < 3 || str.length > 10) {
          result--;
          return result;
        }
        break;
      default:
        result--;
        return result;
    }
  }
  return result;
}
console.log(solution('--count g')); // -1
console.log(solution('-help name')); // -1
console.log(solution('--name SOME_NAME --COUNT 10')); // 0
console.log(solution('--count 44')) // 0


推荐阅读