所以我有一个功能,允许用户将自定义宽度定义为像素或百分比。
问题是我需要获得他们提供的一半数量。以下是我要做的一个例子:
用户输入----------预期结果
50% 25%
300px 150px
任何帮助将不胜感激!
答案 0 :(得分:3)
虽然你应该首先验证他们的输入,但这很有效。
parseInt(str) / 2 + str.match(/(%|px)$/)[0]
如果输入未以%
或px
结尾(无法执行null[0]
),则不进行验证会引发错误。如果您希望默认情况下将缺失或无法识别的单位视为%
,则可以执行以下操作:
parseInt(str) / 2 + (str.match(/(%|px)$/)||["%"])[0]
答案 1 :(得分:1)
将基于正则表达式的String.replace
与回调结合使用:
"50px".replace(/(\d+)(%|px)/, function (_, value, unit) {
return String(value / 2) + unit;
});
// returns 25px