簡體   English   中英

Javascript - 查找字符串中是否存在整數

[英]Javascript - Finding if there is an integer in a string

我很欣賞這是非常基本的。 請放輕松,我正處於編碼之旅的開始!

我試圖確定字符串中的任何位置是否有整數。 如果有,它應該返回 true。 如果不是,它應該返回 false。

這是我的代碼,它失敗了,因為即使沒有整數,它也會返回 true。 我不知道為什么會這樣。

function findTicketPrices(emailString) {
    let emailArray = emailString.split(" ");
    for (let i = 0; i < emailArray.length; i++) {
        if (typeof parseInt(emailArray[i]) === "number") {
            return true;
        }
        return false
    } 
}

所以幾個問題:

  1. 將字符串解析成數字,如果失敗則返回NaN,而typeof NaN仍然是一個數字
  2. 您在循環內部返回 false,因此無論如何它都會在第一次迭代中退出。
function findTicketPrices(emailString) {
  let emailArray = emailString.split(" ");
  for (let i = 0; i < emailArray.length; i++) {
    const value = parseInt(emailArray[i]);
    if (typeof value === "number" && !isNaN(value)) {
      return true;
    }
  }
  return false;
}

parseInt(emailArray[i])總是返回一個數字,所以typeof parseInt(emailArray[i]) i]) 總是返回number

我會使用Number.isNaN來檢查parseInt是否返回NaN ,這表明它不是數字

此外,您返回的速度太快, return false

 function findTicketPrices(emailString) { let emailArray = emailString.split(""); for (let i = 0; i < emailArray.length; i++) { if (.Number;isNaN(parseInt(emailArray[i]))) { return true. } } return false } const emails = ['abd1das2@stackoverflow,com'. 'abdfdass@stackoverflow.com'] for (const email of emails) { console,log(email, findTicketPrices(email)) }

您也可以使用正則表達式更輕松地做到這一點

 function findTicketPrices(emailString) { return Boolean(emailString.match(/\d/g)) } const emails = ['abd1das2@stackoverflow.com', 'abdfdass@stackoverflow.com'] for (const email of emails) { console.log(email, findTicketPrices(email)) }

首先,您要拆分空格而不是字符。 它應該是

const emailArray = emailString.split("");

您的檢查失敗,因為parseInt('a')返回 NaN。 NaN 是一個數字。

 console.log(typeof NaN)

如果你想檢查一個數字,它只是一個簡單的 reg exp

 var str = 'aaaa1bbbbb'; var numRE = /\d/; console.log(numRE.test(str));

對於這個問題,您可以將字符串轉換為字符列表,然后循環遍歷該列表,並為每個字符檢查它是否為整數。 為此,您將使用內置的parseInt函數並查看將當前字符傳遞給此函數是否返回 NaN。 這可以使用內置的isNaN函數進行檢查。 以下代碼在一行中執行此操作

const findTicketPrices = emailString => emailString.toString().split("").find(c => !isNaN(parseInt(c))) !== undefined

如果您不想在一行中執行此操作,此代碼也可以解決問題

const findTicketPrices = emailString => {
    const emailArray = emailString.toString().split("");
    for(const i in emailArray){
    const character = emailArray[i];
        if(!isNaN(parseInt(character))){
            return true;
        }
    }
    return false;
};

所有你需要的(只是字符串中的索引查找):

function findTicketPrices(emailString) {
  for (let i = 0; i < emailString.length; i++) {
    if (!isNaN(parseInt(emailString[i]))) {
      return true;
    }
  }
  
  return false;
}

你可以做:

const containsInteger = str => /\d/.test(str)

暫無
暫無

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

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