簡體   English   中英

使用 isInteger 檢查字符(作為字符串)是否為數字不起作用

[英]Checking if a character (as a string) is digit with isInteger does not work

為什么我在 IF 內的return不起作用?

function telephoneCheck(str) {
  var a;
  let result = false;
  let str1 = str.split("");
  if (
    str1[0].isInteger === true &&
    str1[1].isInteger === true &&
    str1[2].isInteger === true &&
    str1[3] === "-" &&
    str1[4].isInteger === true &&
    str1[5].isInteger === true &&
    str1[6].isInteger === true &&
    str1[7] === "-" &&
    str1[8].isInteger === true &&
    str1[9].isInteger === true &&
    str1[10].isInteger === true &&
    str1[11].isInteger === true
  ) {
    return true;
  }
}
telephoneCheck("555-555-5555");

您的代碼不起作用,因為Number.isInteger()應按如下方式使用:

Number.isInteger(5) //true
Number.isInteger(4.3) //false
Numbers.isInteger('5') //false

現在,要使您的代碼正常工作,您需要以這種方式進行檢查

Number.isInteger(parseInt(str[i])) === true //which is not really necessary
Number.isInteger(parseInt(str[i])) //is enough

雖然這可行,但還有更簡潔的方法來編寫您需要的 function。 嘗試學習regex ,甚至foreach都可以完成這項工作。

如果我是你,我會使用isNaN檢查 str1[index] 是否是一個數字,因為它還會檢查是否有一個數字作為字符串(在你的例子中就是這種情況)。 請注意, Number.isInteger(value)將為任何字符串返回 false,即使有一個數字作為字符串。 在下面檢查我的建議:

function telephoneCheck(str) {        
    let str1 = str.split("");
    if (
        isNumber(str1[0]) &&
        isNumber(str1[1]) &&
        isNumber(str1[2]) &&
        str1[3] === "-" &&
        isNumber(str1[4]) &&
        isNumber(str1[5]) &&
        isNumber(str1[6]) &&
        str1[7] === "-" &&
        isNumber(str1[8]) &&
        isNumber(str1[9]) &&
        isNumber(str1[10]) &&
        isNumber(str1[11])
    ) {
        return true;
    }
}

function isNumber(input) {
    return !isNaN(input);
}

telephoneCheck("555-555-5555");

isInteger()是 Number() object 的一種方法,因此您對字符串的測試將不起作用,您可以將字符串轉換為數字,但您可能會失去驗證的含義。

另一種方法是使用正則表達式測試進行檢查

替換: str1[0].isInteger === true &&

與:/[0-9]/.test( /[0-9]/.test(str1[0]) &&

這將檢查提供的字符串是否是 0 到 9 之間的數字

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM