Javascript 我正在接受用户输入并将其拆分-如何最好地检查每个类型并删除空格?

Javascript 我正在接受用户输入并将其拆分-如何最好地检查每个类型并删除空格?,javascript,Javascript,我不确定是否有更好的方法 基本上,仅以用户输入为例-美发沙龙,1,4 当我按分割时,我得到['hair salon','1','4']。我正在进行错误检查,以确保其始终只有3个值通过最大值,但如何删除空格('4'),并检查'hair salon'是否为字符串,其他两个是否为数字 谢谢,因为split()返回字符串数组,所以所有元素都是字符串。您可以使用parseInt()转换第二个和第三个参数。如果值无法转换为数字,则返回NaN: 请尝试以下代码: var str="hair salon, 1,

我不确定是否有更好的方法

基本上,仅以用户输入为例-
美发沙龙,1,4

当我按
分割时,
我得到
['hair salon','1','4']
。我正在进行错误检查,以确保其始终只有3个值通过最大值,但如何删除空格(
'4'
),并检查
'hair salon'
是否为字符串,其他两个是否为数字

谢谢,因为
split()
返回字符串数组,所以所有元素都是字符串。您可以使用
parseInt()
转换第二个和第三个参数。如果值无法转换为数字,则返回NaN:

请尝试以下代码:

var str="hair salon, 1, 4"
var val=str.split(', ');

var a=parseInt(val[1]);
var b=parseInt(val[2]);
var c=a+b;
console.log(c);
因为
split()
返回字符串数组,所以所有元素都是字符串。您可以使用
parseInt()
转换第二个和第三个参数。如果值无法转换为数字,则返回NaN:

请尝试以下代码:

var str="hair salon, 1, 4"
var val=str.split(', ');

var a=parseInt(val[1]);
var b=parseInt(val[2]);
var c=a+b;
console.log(c);

假设用户输入为

hair salon, 1, 4
现在拆分(','),将得到一个数组,如下所示:

var arr=['hair salon','1','4']

您将以字符串形式获得每个输入

for(i=0;i<arr.length;i++)
{
 arr[i] = arr[i].trim() // will remove space from back & front
}

希望,它能满足您的需要

假设您有用户输入作为

hair salon, 1, 4
现在拆分(','),将得到一个数组,如下所示:

var arr=['hair salon','1','4']

您将以字符串形式获得每个输入

for(i=0;i<arr.length;i++)
{
 arr[i] = arr[i].trim() // will remove space from back & front
}

希望它能满足您的需要

考虑以下功能验证输入以验证用户输入:

function validateInput(str){

    var items = str.split(",").map((v) => v.trim());
    if (items.length > 3 
            || typeof items[0] !== 'string' || /^[\d-]+$/.test(items[0])
            || isNaN(Number(items[1])) || isNaN(Number(items[2])))
    {
        if (validateInput.items) validateInput.items = null; // clear previous input items
        throw new Error("Invalid data!");
    }
    validateInput.items = items;

    return true;
}
validateInput.items = null;  // static property containing valid user input

console.log(validateInput("hair salon, 1, 4"));  // true
console.log(validateInput.items);                // ["hair salon", "1", "4"]

console.log(validateInput("-8, 7, e"));  // will throw "Error: Invalid data!"

考虑以下函数
validateInput
来验证用户输入:

function validateInput(str){

    var items = str.split(",").map((v) => v.trim());
    if (items.length > 3 
            || typeof items[0] !== 'string' || /^[\d-]+$/.test(items[0])
            || isNaN(Number(items[1])) || isNaN(Number(items[2])))
    {
        if (validateInput.items) validateInput.items = null; // clear previous input items
        throw new Error("Invalid data!");
    }
    validateInput.items = items;

    return true;
}
validateInput.items = null;  // static property containing valid user input

console.log(validateInput("hair salon, 1, 4"));  // true
console.log(validateInput.items);                // ["hair salon", "1", "4"]

console.log(validateInput("-8, 7, e"));  // will throw "Error: Invalid data!"

split()
将始终返回字符串数组,因此第一个元素将始终是stringThank,但是否有方法检查其他两个元素是否可以更改为number?