javascript - 检查输入验证 [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
解决方案
您需要先将输入拆分为单词,然后测试数组元素。
如果验证成功,您不能立即返回验证器的结果,因为您必须继续测试其他参数。
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
推荐阅读
- javascript - 将 JS 范围滑块功能应用于多个 ID 选择器
- c# - 从 Winform C# 应用程序调用 Python 脚本
- django - Wagtail RichTextField 未在 Django ModelForm 中显示
- reactjs - ComboSelection MaterialUI ReactJs Api 数据
- javascript - 如何创建传递对象和键并返回嵌套对象值的函数
- r - 如何将行名称提取为变量,以便将其应用于另一个数据框
- chromecast - ChromeCast 如何与接收方应用和发送方应用通信?
- c# - 如何在webapi c#中配置路由,以便可以使用任何变量名代替{id}
- mysql - MySQL LIMIT 在 Prestashop 模块中不起作用
- javascript - 如何将鼠标跟踪效果添加到特定的 wordpress 行?