[英]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
}
}
所以幾個問題:
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.