JavaScript的parseInt()比想象的更强大

95 阅读2分钟

背景

力扣第八题:字符串转换整数 (atoi)

大致就是给一些字符串转换成整数,超出范围就展示最大最小值,字符串内没数字就展示0.

示例:

输入: s = "42"
输出: 42

输入: s = "   -42"
输出: -42

输入: s = "4193 with words"
输出: 4193

很多复杂的解法,最后发现使用一个parseInt()全给解决了。

parseInt()

parseInt() 方法是 JavaScript 中用于解析字符串并返回整数的函数。 parseInt() 方法设计用于将字符串解析为整数。其基本思路是从字符串的开头开始解析,直到遇到非数字字符为止。该方法还支持指定进制作为第二个参数,可以解析不同进制的字符串。

使用方法:

// 基本用法
let intValue = parseInt("123"); // 解析字符串 "123",返回整数 123

// 指定进制
let binaryValue = parseInt("1010", 2); // 解析二进制字符串 "1010",返回整数 10

// 忽略非数字部分
let mixedValue = parseInt("42 years old"); // 解析字符串 "42 years old",返回整数 42
let mixedValue = parseInt("      -0000042"); // 返回-42

// 处理特殊情况
let nanValue = parseInt("hello"); // 无法解析成数字,返回 NaN

运用场景:

  1. 用户输入验证: 可以用于验证用户输入是否为有效的整数。
  2. 处理特殊字符串: 当需要从字符串中提取数字部分时,可以使用 parseInt() 方法。
  3. 进制转换: 当需要将不同进制的字符串转换为十进制整数时,可以通过指定第二个参数实现。
  4. 处理数据: 在处理数据时,有时需要将字符串表示的数字转换为整数进行计算。

请注意,parseInt() 方法在解析无法转换为数字的字符串时会返回 NaN。

解题答案

/**
 * @param {string} s
 * @return {number}
 */
var myAtoi = function(s) {
    let res = parseInt(s, 10)
    if (isNaN(res)) {
        return 0;
    } else if (res < -Math.pow(2, 31) || res > Math.pow(2, 31) - 1) {
        return res < -Math.pow(2, 31) ? -Math.pow(2, 31) : Math.pow(2, 31) - 1;
    } else {
        return res;
    }
};