したがって、ユーザーがカスタム幅をピクセルまたはパーセントとして定義できる関数があります。
問題は、彼らが提供する数の半分を取得する必要があることです。これが私がやろうとしていることの例です:
ユーザー入力----------期待される結果
50% 25%
300px 150px
どんな助けでも大歓迎です!
したがって、ユーザーがカスタム幅をピクセルまたはパーセントとして定義できる関数があります。
問題は、彼らが提供する数の半分を取得する必要があることです。これが私がやろうとしていることの例です:
ユーザー入力----------期待される結果
50% 25%
300px 150px
どんな助けでも大歓迎です!
おそらく最初に入力を検証する必要がありますが、これは機能します。
parseInt(str) / 2 + str.match(/(%|px)$/)[0]
%
検証を行わないと、入力がor px
(can't do )で終わらない場合、エラーがスローされますnull[0]
。代わりに、欠落または認識されていないユニットをデフォルトとして扱いたい場合は%
、次のようにすることができます。
parseInt(str) / 2 + (str.match(/(%|px)$/)||["%"])[0]
String.replace
コールバックと組み合わせて正規表現ベースを使用します。
"50px".replace(/(\d+)(%|px)/, function (_, value, unit) {
return String(value / 2) + unit;
});
// returns 25px