
本文介绍如何通过单次用户输入(如空格分隔的数字字符串)高效解析并存储为整数数组,核心是结合 split() 切分字符串与 map() + parseInt() 类型转换。
本文介绍如何通过单次用户输入(如空格分隔的数字字符串)高效解析并存储为整数数组,核心是结合 `split()` 切分字符串与 `map()` + `parseint()` 类型转换。
在 Node.js 环境中使用 prompt-sync 获取用户输入时,prompt() 总是返回一个字符串——即使用户键入的是多个数字,例如 7 6 5 9 21 4 6 99 820,它仍被整体当作一个字符串接收。若直接 push() 进数组,结果将是 ["7 6 5 9 21 4 6 99 820"](单元素字符串数组),而非预期的 [7, 6, 5, 9, 21, 4, 6, 99, 820](多元素整数数组)。
解决的关键在于两步处理:
- 分割字符串:用 .split(' ') 按空格拆分为字符串数组(如 ["7", "6", "5", ..., "820"]);
- 类型转换:用 .map(num => parseInt(num)) 将每个字符串转为整数。
以下是完整、健壮的实现代码:
const prompt = require('prompt-sync')();
const input = prompt("Enter x amount of integers (space-separated): ");
const numArray = input
.trim() // 去除首尾空格,避免空字符串
.split(/\s+/) // 使用正则 \s+ 支持多个空格、制表符等空白符
.filter(str => str !== '') // 过滤可能产生的空字符串(如开头/结尾多余空格)
.map(str => parseInt(str, 10)); // 显式指定基数 10,确保十进制解析
console.log(numArray); // 输出: [7, 6, 5, 9, 21, 4, 6, 99, 820]
✅ 注意事项:
- 若用户用逗号分隔(如 7,6,5),可将 .split(/\s+/) 替换为 .split(/,\s*/);
- parseInt() 在遇到非法字符时会静默截断(如 "12a" → 12),如需严格校验,建议改用 Number() 并配合 isNaN() 判断;
- 使用 trim() 和正则 /\s+/ 可提升容错性,兼容输入前后空格或连续空格场景。
通过这一模式,你不仅能处理空格分隔的整数,还可轻松扩展支持其他分隔符或添加输入验证逻辑,是命令行数据采集中的基础而实用的技巧。










