parseInt从字符串开头提取连续数字字符并转为整数,支持指定进制;必须显式传入进制参数(如10)以避免歧义;开头无有效数字时返回NaN;与parseFloat相比仅取整数部分,精确提取推荐正则配合使用。

parseInt 可以从字符串开头提取连续的数字字符(支持进制指定),遇到非数字字符立即停止,忽略后续内容。
基本用法:自动识别十进制前缀
直接传入字符串,parseInt 会从首字符开始读取,直到遇到无法解析为数字的字符为止:
-
parseInt("123abc") → 123(只取前面的
123) -
parseInt(" 45.67px") → 45(跳过开头空格,遇到
.停止) -
parseInt("0xffg") → 0(
0x开头会被识别为十六进制,但g非法,所以返回0;更安全的做法是显式指定进制)
必须指定进制(推荐 always)
不传进制参数时,parseInt 可能按八进制或十六进制解析(如 "012" 在旧模式下可能得 10),造成意外结果。因此始终传入第二个参数 10:
- parseInt("012", 10) → 12(明确按十进制)
- parseInt("1010", 2) → 10(二进制字符串转数字)
- parseInt("FF", 16) → 255(十六进制)
注意边界情况和失败处理
如果字符串开头**没有有效数字**,parseInt 返回 NaN:
在 Java 中初始化和管理阿里云 SDK客户端。包括单例模式、线程安全、endpoint 与 region 配置、VPC 终端节点、同步与异步等。
立即学习“Java免费学习笔记(深入)”;
- parseInt("abc123", 10) → NaN(开头不是数字)
- parseInt("", 10) → NaN
- parseInt(" ", 10) → NaN(纯空白也失败)
建议配合 Number.isNaN() 或逻辑判断做容错:
const str = " 789xyz"; const num = parseInt(str, 10); const result = Number.isNaN(num) ? 0 : num; // 得到 789
对比 parseFloat 和正则(适用场景提醒)
parseInt 只取整数前缀;若需提取带小数点的数字前缀(如 "3.14abc" → 3.14),应改用 parseFloat:
- parseInt("3.14abc", 10) → 3
- parseFloat("3.14abc") → 3.14
如果需要更精确控制(比如跳过单位、提取多个数字、或严格匹配开头数字),可考虑正则:
const match = "width: 120px".match(/^\s*(\d+)/); const num = match ? parseInt(match[1], 10) : 0;

















