You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

从字符串中提取数字:如何拆分带连字符的数值字符串?

提取连字符两侧数值的几种实现方案

嘿,这个需求在处理字符串格式的数值范围时太常见了!结合你给出的JavaScript场景,我给你分享几个实用的实现方法,你可以根据实际的字符串格式灵活选择:

方法一:固定分隔符拆分(适合格式严格统一的情况)

如果你的字符串格式始终是「数值 + 空格-空格 + 数值」,直接用split()方法拆分最省心:

var string = "0.1 - 1";
// 按固定的" - "分隔符拆分字符串
var numParts = string.split(" - ");
// 转换为数值类型
var leftValue = parseFloat(numParts[0]);
var rightValue = parseFloat(numParts[1]);

console.log(leftValue); // 输出 0.1
console.log(rightValue); // 输出 1

这种方法简单高效,但只适用于分隔符完全固定的场景,如果连字符前后的空格数量不固定,就不太适用了。

方法二:正则表达式(灵活适配各种空格情况)

如果字符串里的空格可能不固定(比如有的是"0.1-1",有的是"0.1 - 1"),用正则表达式匹配是最稳妥的方式:

var string = "0.1 - 1";
// 正则匹配:允许数值前后有任意空格,支持整数和小数
var numMatch = string.match(/^\s*(\d+\.?\d*)\s*-\s*(\d+\.?\d*)\s*$/);

if (numMatch) {
  var leftValue = parseFloat(numMatch[1]);
  var rightValue = parseFloat(numMatch[2]);
  
  console.log(leftValue); // 0.1
  console.log(rightValue); // 1
} else {
  console.log("字符串格式不符合预期哦");
}

正则的逻辑简单说下:

  • ^\s* 和 \s*$:匹配字符串开头和结尾的任意空格
  • (\d+\.?\d*):匹配整数或小数(比如0.1、1、100.5都能匹配)
  • \s*-\s*:匹配连字符及前后的任意空格

方法三:拆分后去除空格(简洁灵活)

还有一种折中方案,先按连字符拆分,再给每个部分去掉前后空格,最后转成数值:

var string = "0.1 - 1";
// 按连字符拆分,再遍历去除每个部分的空格
var numParts = string.split("-").map(part => part.trim());
// 转换为数值
var leftValue = parseFloat(numParts[0]);
var rightValue = parseFloat(numParts[1]);

console.log(leftValue, rightValue); // 输出 0.1 1

这个方法代码简洁,也能适配各种空格情况,新手也容易理解。

小提醒

不管用哪种方法,最好加个判断逻辑(比如检查拆分后的数组长度是否为2,或者正则是否匹配成功),避免因为字符串格式不规范导致报错哦!

内容的提问来源于stack exchange,提问作者quo91

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.13 08:53:16