web-dev-qa-db-ja.com

javascript / jqueryによる先行ゼロの削除/切り捨て

Javascript、jqueryにより、数値(任意の文字列)から先行ゼロを削除または切り捨てるソリューションを提案します。

65
Somnath Muluk

文字列の先頭でゼロに一致する正規表現を使用できます。

s = s.replace(/^0+/, '');
152
Guffa

Number()関数を使用します。

var str = "00001";
str = Number(str).toString();
>> "1"

または、文字列に1を掛けます

var str = "00000000002346301625363";
str = (str * 1).toString();
>> "2346301625363"
24
Charles Hamel

少し遅れるかもしれませんが、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

それが誰かを助けることを願って

11
DiegoDD

あなたは「任意の文字列」と言ったので、これもあなたが処理したい文字列であると仮定しています。

"00012  34 0000432    0035"

だから、正規表現は行く方法です:

var trimmed = s.replace(/\b0+/g, "");

そして、これは「000000」値の損失を防ぎます。

var trimmed = s.replace(/\b(0(?!\b))+/g, "")

ここでの作業例 を見ることができます

11
John Fisher
parseInt(value) or parseFloat(value)

これはうまく機能します。

3
Krupall

私は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>
3
Somnath Muluk

これを試して、

   function ltrim(str, chars) {
        chars = chars || "\\s";
        return str.replace(new RegExp("^[" + chars + "]+", "g"), "");
    }

    var str =ltrim("01545878","0");

もっと こちら

2
Gowri

「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として使用する場合があります

1
antoine

数値がintの場合

"" + parseInt(str)

数値がフロートの場合

"" + parseFloat(str)
1
loki_dev

次のように単純に1倍してみてください。

"00123" * 1; //数値として取得
"00123" * 1 + ""; //文字列として取得

1
Siyavash Hamdi

正規表現を使用しないもう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

0
madreason
const input = '0093';
const match = input.match(/^(0+)(\d+)$/);
const result = match && match[2] || input;
0
Boney