多应用+插件架构,代码干净,二开方便,首家独创一键云编译技术,文档视频完善,免费商用码云13.8K 广告
# 表示数值的字符串 **题目** 请实现一个函数用来判断字符串是否表示数值(包括整数和小数)。例如,字符串"+100",“5e2”,"-123",“3.1416"和”-1E-16"都表示数值。 但是"12e",“1a3.14”,“1.2.3”,"±5"和"12e+4.3"都不是。 * * * **思路** 只能出现这几种字符,e E + - . ‘0’ - ‘9’,且针对不同字符有不一样的规则 一、针对e e不能出现在末尾,且只能出现一次 二、针对± 1. 若是在开头,则continue 2. 若不是在开头,则必须要e或者E后面 三、针对. .不能出现两次,且不能再e之后 四、针对其他符号,如果不是0-9的字符串就返回false ~~~ 表示数字ascii码: 48 < s[i].charCodeAt(0) < 57 ~~~ ``` function isNumeric(s) { // write code here // 针对e e不能出现在末尾,且只能出现一次 // 针对+- // 1.若是在开头,则continue // 2.若不是在开头,则必须要e或者E后面 // 针对. .不能出现两次,且不能再e之后 // 针对其他符号,如果不是0-9的字符串就返回false let hasE = false, hasDot = false for (let i = 0; i < s.length; i++) { if (s[i] === 'e' || s[i] === 'E') { if (i === s.length - 1) { return false } if (hasE) { return false } hasE = true } else if (s[i] === '+' || s[i] === '-') { if (i === 0) { continue } else if (s[i-1] !== 'E' && s[i-1] !== 'e'){ return false } } else if (s[i] === '.') { if (hasDot || hasE) { return false } hasDot = true } else if (s[i].charCodeAt(0) < 48 || s[i].charCodeAt(0) > 57) { return false } } return true } ```