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

食谱分量转换工具:正则匹配含空格用户输入的问题求助

食谱分量转换工具的分数输入适配方案

问题分析

当前的if/else逻辑仅通过空格和斜杠判断分数类型,无法区分带空格的单分数(如「1/2 cup」)和混合分数(如「1 1/2 Cup」)——带空格的单分数会因包含空格被错误归类到混合分数分支,导致处理逻辑失效。

解决方案

核心思路是用正则表达式精准匹配不同分数的结构特征,替代单纯的字符包含判断;同时优化文本提取逻辑,确保只提取单位和食材名称。

1. 优化文本提取逻辑

原逻辑通过匹配字母和空格提取文本,可能混入数值部分的空格。改用替换操作直接剥离开头的数值,更准确:

// 提取单位和食材文本(移除开头的数值部分)
var unitAndIngredient = originalMeasurementsString.replace(/^\d+\s*\d*\/?\d*\s*/, '').trim();

// 拼接转换后数值与文本
$('#resizedMeasurements').html(resizedWholeNumber + resizedDecimal + ' ' + unitAndIngredient);

2. 重构分数类型判断逻辑

通过正则匹配不同分数的结构,精准区分类型:

// 匹配混合分数(结构:整数 + 空格 + 分数,如「1 1/2」)
if (/^\d+\s+\d+\/\d+/.test(originalMeasurementsString)) {
  // 混合分数处理逻辑
}
// 匹配单分数(包括「1/2」「1/2 cup」等格式)
else if (/^\d+\/\d+/.test(originalMeasurementsString)) {
  // 单分数处理逻辑
}
// 整数输入情况(如「1 Cup」)
else {
  // 整数处理逻辑
}

逻辑说明

  • 混合分数正则/^\d+\s+\d+\/\d+/:仅匹配开头为「整数+空格+分数」的结构,避免将单分数后的空格误判为混合分数的分隔符。
  • 单分数正则/^\d+\/\d+/:匹配所有以分数开头的输入,无论后续是否带空格和文本。
  • 文本提取正则/^\d+\s*\d*\/?\d*\s*/:匹配开头的整数、分数(包括混合分数)及后续空格,确保剥离所有数值部分,只保留单位和食材名。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.06 00:20:31