Somnath Muluk
Somnath Muluk

Reputation: 57656

Remove/ truncate leading zeros by javascript/jquery

Suggest solution for removing or truncating leading zeros from number(any string) by javascript,jquery.

Upvotes: 117

Views: 203413

Answers (18)

Saurabh Lande
Saurabh Lande

Reputation: 1

Now here you can remove all the front 0 from any string without removing 0's inside that string

let asd = '0000SD1008009023';
do {
  asd=asd.substring(1,asd.length);
} while(asd[0]==0)
'SD1008009023'

Upvotes: 0

Mohammad Tbeishat
Mohammad Tbeishat

Reputation: 1066

I wanted to remove all leading zeros for every sequence of digits in a string and to return 0 if the digit value equals to zero.

And I ended up doing so:

str = str.replace(/(0{1,}\d+)/, "removeLeadingZeros('$1')")

function removeLeadingZeros(string) {
    if (string.length == 1) return string
    if (string == 0) return 0
    string = string.replace(/^0{1,}/, '');
    return string
}

Upvotes: 1

Korah Babu Varghese
Korah Babu Varghese

Reputation: 70

Use "Math.abs"

eg: Math.abs(003) = 3;

console.log(Math.abs(003))

Upvotes: 1

Joost
Joost

Reputation: 3209

Regex solution from Guffa, but leaving at least one character

"123".replace(/^0*(.+)/, '$1'); // 123
"012".replace(/^0*(.+)/, '$1'); // 12
"000".replace(/^0*(.+)/, '$1'); // 0

Upvotes: 1

Vivek Kapoor
Vivek Kapoor

Reputation: 491

const number = '0000007457841'; console.log(+number) //7457841;

OR number.replace(/^0+/, '')

Upvotes: 1

Surya R Praveen
Surya R Praveen

Reputation: 3745

1. The most explicit is to use parseInt():

parseInt(number, 10)

2. Another way is to use the + unary operator:

+number

3. You can also go the regular expression route, like this:

number.replace(/^0+/, '')

Upvotes: 3

Jade Hamel
Jade Hamel

Reputation: 1420

I would use the Number() function:

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

Or I would multiply my string by 1

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

Upvotes: 50

Boney
Boney

Reputation: 2202

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

Upvotes: 0

Siyavash Hamdi
Siyavash Hamdi

Reputation: 3087

Simply try to multiply by one as following:

"00123" * 1;              // Get as number
"00123" * 1 + "";       // Get as string

Upvotes: 3

madreason
madreason

Reputation: 435

One another way without regex:

function trimLeadingZerosSubstr(str) {
    var xLastChr = str.length - 1, xChrIdx = 0;
    while (str[xChrIdx] === "0" && xChrIdx < xLastChr) {
        xChrIdx++;
    }
    return xChrIdx > 0 ? str.substr(xChrIdx) : str;
}

With short string it will be more faster than regex (jsperf)

Upvotes: 0

loakesh bachhu
loakesh bachhu

Reputation: 381

If number is int use

"" + parseInt(str)

If the number is float use

"" + parseFloat(str)

Upvotes: 1

John Fisher
John Fisher

Reputation: 22719

Since you said "any string", I'm assuming this is a string you want to handle, too.

"00012  34 0000432    0035"

So, regex is the way to go:

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

And this will prevent loss of a "000000" value.

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

You can see a working example here

Upvotes: 14

Krupall
Krupall

Reputation: 409

parseInt(value) or parseFloat(value)

This will work nicely.

Upvotes: 6

DiegoDD
DiegoDD

Reputation: 1665

Maybe a little late, but I want to add my 2 cents.

if your string ALWAYS represents a number, with possible leading zeros, you can simply cast the string to a number by using the '+' operator.

e.g.

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)

if your string doesn't represent a number and you only need to remove the 0's use the other solutions, but if you only need them as number, this is the shortest way.

and FYI you can do the opposite, force numbers to act as strings if you concatenate an empty string to them, like:

x = 5;
alert(typeof x); //number
x = x+"";
alert(typeof x); //string

hope it helps somebody

Upvotes: 17

antoine
antoine

Reputation: 688

You should use the "radix" parameter of the "parseInt" function : 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

if you don't use it, some javascript engine might use it as an octal parseInt('015') => 0

Upvotes: 1

Somnath Muluk
Somnath Muluk

Reputation: 57656

I got this solution for truncating leading zeros(number or any string) in 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>

Upvotes: 3

Gowri
Gowri

Reputation: 16835

Try this,

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

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

More here

Upvotes: 2

Guffa
Guffa

Reputation: 700342

You can use a regular expression that matches zeroes at the beginning of the string:

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

Upvotes: 265

Related Questions