Javascript、jqueryにより、数値(任意の文字列)から先行ゼロを削除または切り捨てるソリューションを提案します。
文字列の先頭でゼロに一致する正規表現を使用できます。
s = s.replace(/^0+/, '');
Number()関数を使用します。
var str = "00001";
str = Number(str).toString();
>> "1"
または、文字列に1を掛けます
var str = "00000000002346301625363";
str = (str * 1).toString();
>> "2346301625363"
少し遅れるかもしれませんが、2セントを追加したいと思います。
文字列が常に数字を表し、先頭にゼロが含まれる場合は、「+」演算子を使用して文字列を数字にキャストするだけです。
例えば.
x= "00005";
alert(typeof x); //"string"
alert(x);// "00005"
x = +x ; //or x= +"00005"; //do NOT confuse with x+=x, which will only concatenate the value
alert(typeof x); //number , voila!
alert(x); // 5 (as number)
文字列が数字を表さず、0のみを削除する必要がある場合は他のソリューションを使用しますが、数字としてのみ必要な場合はこれが最も簡単な方法です。
そして、FYIでは、空の文字列を連結する場合、数字を強制的に文字列として機能させることができます:
x = 5;
alert(typeof x); //number
x = x+"";
alert(typeof x); //string
それが誰かを助けることを願って
あなたは「任意の文字列」と言ったので、これもあなたが処理したい文字列であると仮定しています。
"00012 34 0000432 0035"
だから、正規表現は行く方法です:
var trimmed = s.replace(/\b0+/g, "");
そして、これは「000000」値の損失を防ぎます。
var trimmed = s.replace(/\b(0(?!\b))+/g, "")
ここでの作業例 を見ることができます
parseInt(value) or parseFloat(value)
これはうまく機能します。
私はjavascriptの先行ゼロ(数値または任意の文字列)を切り捨てるためのこのソリューションを得ました:
<script language="JavaScript" type="text/javascript">
<!--
function trimNumber(s) {
while (s.substr(0,1) == '0' && s.length>1) { s = s.substr(1,9999); }
return s;
}
var s1 = '00123';
var s2 = '000assa';
var s3 = 'assa34300';
var s4 = 'ssa';
var s5 = '121212000';
alert(s1 + '=' + trimNumber(s1));
alert(s2 + '=' + trimNumber(s2));
alert(s3 + '=' + trimNumber(s3));
alert(s4 + '=' + trimNumber(s4));
alert(s5 + '=' + trimNumber(s5));
// end hiding contents -->
</script>
これを試して、
function ltrim(str, chars) {
chars = chars || "\\s";
return str.replace(new RegExp("^[" + chars + "]+", "g"), "");
}
var str =ltrim("01545878","0");
もっと こちら
「parseInt」関数の「radix」パラメーターを使用する必要があります。 https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/parseInt?redirectlocale=en-US&redirectslug = JavaScript%2FReference%2FGlobal_Objects%2FparseInt
parseInt( '015'、10)=> 15
使用しない場合、一部のJavaScriptエンジンは8進数のparseInt( '015')=> 0として使用する場合があります
数値がintの場合
"" + parseInt(str)
数値がフロートの場合
"" + parseFloat(str)
次のように単純に1倍してみてください。
"00123" * 1; //数値として取得
"00123" * 1 + ""; //文字列として取得
正規表現を使用しないもう1つの方法:
function trimLeadingZerosSubstr(str) {
var xLastChr = str.length - 1, xChrIdx = 0;
while (str[xChrIdx] === "0" && xChrIdx < xLastChr) {
xChrIdx++;
}
return xChrIdx > 0 ? str.substr(xChrIdx) : str;
}
短い文字列では、正規表現よりも高速になります( jsperf )
const input = '0093';
const match = input.match(/^(0+)(\d+)$/);
const result = match && match[2] || input;