JavaScript新手求助:如何提取字符串中的数字并存入单个变量?
提取日期字符串中的数字并存入变量(JavaScript)
嘿,作为JavaScript新手碰到这种字符串处理问题完全不用慌!我来给你分享两种实用的方法,帮你轻松搞定提取数字并存入变量的需求~
方法一:用正则表达式直接提取所有数字
这是最直接的方式,不管数字对应的是日期的哪个部分,一键提取所有数字内容:
// 你的目标日期字符串 const dateStr = "Mon, 05 Feb 2018 21:00:39 +0000"; // 使用正则匹配所有连续数字,返回字符串数组 const extractedNumbers = dateStr.match(/\d+/g); console.log(extractedNumbers); // 输出: ["05", "2018", "21", "00", "39", "0000"]
额外处理选项:
- 如果需要把字符串数组转成数字类型数组:
const numberArray = extractedNumbers.map(num => parseInt(num, 10)); console.log(numberArray); // 输出: [5, 2018, 21, 0, 39, 0] - 如果要把所有数字拼接成一个完整字符串存入变量:
const combinedNumberStr = extractedNumbers.join(''); console.log(combinedNumberStr); // 输出: "0520182100390000"
方法二:用Date对象解析(更精准对应日期各部分)
因为你的字符串是标准的RFC 2822日期格式,我们可以直接用JavaScript的Date对象解析,然后提取对应日期部分的数字,这样能明确区分年、月、日等含义:
const dateStr = "Mon, 05 Feb 2018 21:00:39 +0000"; const dateObj = new Date(dateStr); // 将各部分数字存入一个对象变量(结构清晰,方便后续使用) const dateParts = { day: dateObj.getDate(), month: dateObj.getMonth() + 1, // 注意:JS里月份是0-11,所以要+1转换为1-12 year: dateObj.getFullYear(), hours: dateObj.getHours(), minutes: dateObj.getMinutes(), seconds: dateObj.getSeconds(), timezone: parseInt(dateStr.match(/[+-]\d+/g)[0], 10) // 提取时区数字 }; console.log(dateParts); // 输出: { day: 5, month: 2, year: 2018, hours: 21, minutes: 0, seconds: 39, timezone: 0 }
小提示:
- 正则
/\d+/g里的\d表示匹配单个数字,+表示匹配连续的一个或多个数字,g表示全局匹配整个字符串。 - 使用
Date对象时,记得月份是从0开始计数的,所以要加1才能得到我们日常认知的1-12月。
内容的提问来源于stack exchange,提问作者Esinko
相关产品推荐
相关产品推荐

