parseint按指定进制解析字符串开头合法数字:必须显式传radix(2–36)避免歧义;遇非法字符即停止,不报错;支持大小写字母(如"ff"、"z"),超出进制范围则nan;严格转换建议用number或正则校验。

parseInt 可以按指定进制(radix)把字符串开头的合法数字部分转为十进制整数,关键在于第二个参数传入进制数(2~36 之间的整数)。
明确指定进制,避免意外的八进制解析
不传第二个参数时,parseInt 会按“旧规则”自动推断进制:以 0x 开头按十六进制,以 0 开头在非严格模式下可能按八进制(ES5 之前),容易出错。所以始终显式传入 radix是最佳实践。
-
parseInt("1010", 2)→ 10(二进制 "1010" 转十进制) -
parseInt("FF", 16)→ 255(十六进制 "FF") -
parseInt("77", 8)→ 63(八进制 "77")
只解析开头连续的有效数字,忽略后续内容
parseInt 从左到右扫描,遇到第一个非法字符就停止,不报错,只返回已成功解析的部分。
Java Maven 项目审查工作流的通用输入处理。当 Java Maven 项目以 ZIP压缩包或 GitLab 仓库 URL 形式提供且需要...时使用。
-
parseInt("1010abc", 2)→ 10("1010" 合法,"abc" 被忽略) -
parseInt(" 0xFFG", 16)→ 255(跳过空格,"0xFF" 有效,G 不在十六进制范围内,截断) -
parseInt("xyz123", 10)→ NaN(开头无数字,直接失败)
注意字母大小写与进制范围限制
进制决定可用字符:radix=16 支持 0–9 和 a–f(或 A–F);radix=36 支持 0–9 + a–z(共 36 个符号)。超出范围的字母会被截断。
-
parseInt("g1", 17)→ NaN("g" 在 17 进制中无效,因 17 进制最大用 'g' 表示 16,但 parseInt 中字母必须小写且不能超过对应进制上限) -
parseInt("Z", 36)→ 35(z 是 36 进制中最后一个符号,值为 35) -
parseInt("1a", 10)→ 1("a" 在十进制中非法,解析到 "1" 就停)
常见误用与替代建议
如果需要更严格的转换(如不允许空格、要求完全匹配),parseInt 不够可靠。可配合正则或 Number 使用:
- 只允许纯数字字符串(十进制):用
Number(str)或str.match(/^\d+$/)配合 parseInt - 确保整个字符串都被解析:用
parseInt(str, radix) === Number(str)判断是否完全匹配(仅适用于无前导零等简单情况) - 处理带符号的进制字符串:parseInt 自动识别 +/−,如
parseInt("-101", 2)→ −5
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南










