Запропонуйте рішення для видалення або обрізання початкових нулів від числа (будь-якого рядка) за допомогою javascript, jquery.
'00000.5'
)?
Запропонуйте рішення для видалення або обрізання початкових нулів від числа (будь-якого рядка) за допомогою javascript, jquery.
'00000.5'
)?
Відповіді:
Ви можете використовувати регулярний вираз, який відповідає нулям на початку рядка:
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, "")
Робочий приклад ви можете побачити тут
Я отримав це рішення для обрізання початкових нулів (числа або будь-якого рядка) у 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>
false
. Використання 9999
як другого параметра для substr
не потрібно. Просто використовуйте while (s.substr(0,1) == '0') s = s.substr(1);
. Крім того, цей фрагмент коду виглядає по-справжньому старим, language
атрибут script
тегу вже давно застарілий, і використання коментарів всередині script
тегів потрібно лише для браузерів, які взагалі не розуміють script
тег, наприклад Internet Explorer 1.0.
parseInt(value) or parseFloat(value)
Це буде працювати добре.
Спробуйте це,
function ltrim(str, chars) {
chars = chars || "\\s";
return str.replace(new RegExp("^[" + chars + "]+", "g"), "");
}
var str =ltrim("01545878","0");
Більше тут
Просто спробуйте помножити на одиницю наступним чином:
"00123" * 1; // Отримати як номер
"00123" * 1 + ""; // Отримати як рядок
Ви повинні використовувати параметр "radix" функції "parseInt": 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 може використовувати його як вісімковий parseInt ('015') => 0
Один інший спосіб без регулярного виразу:
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 )