Предложите решение для удаления или усечения ведущих нулей из числа (любой строки) с помощью javascript, jquery.
Удаление/усечение ведущих нулей javascript/jquery
Ответ 1
Вы можете использовать регулярное выражение, которое соответствует нулям в начале строки:
s = s.replace(/^0+/, '');
Ответ 2
Я бы использовал функцию Number():
var str = "00001";
str = Number(str).toString();
>> "1"
Или я бы умножил мою строку на 1
var str = "00000000002346301625363";
str = (str * 1).toString();
>> "2346301625363"
Ответ 3
Поскольку вы сказали "любая строка", я предполагаю, что это тоже строка, которую вы хотите обработать.
"00012 34 0000432 0035"
Итак, регулярное выражение - это путь:
var trimmed = s.replace(/\b0+/g, "");
И это предотвратит потерю значения "000000".
var trimmed = s.replace(/\b(0(?!\b))+/g, "")
Здесь вы можете увидеть рабочий
Ответ 4
Может быть, немного поздно, но я хочу добавить свои 2 цента.
если ваша строка ALWAYS представляет число, с возможными ведущими нулями, вы можете просто передать строку в число с помощью оператора "+".
например.
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
надеюсь, что это поможет кому-то
Ответ 5
Я получил это решение для обрезания ведущих нулей (числа или любой строки) в 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>
Ответ 6
parseInt(value) or parseFloat(value)
Это будет хорошо работать.
Ответ 7
Попробуйте это,
function ltrim(str, chars) {
chars = chars || "\\s";
return str.replace(new RegExp("^[" + chars + "]+", "g"), "");
}
var str =ltrim("01545878","0");
Подробнее здесь
Ответ 8
Вы должны использовать параметр "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
Ответ 9
Если номер int используется
"" + parseInt(str)
Если число использует float
"" + parseFloat(str)
Ответ 10
Просто попробуйте умножить на единицу следующим образом:
"00123" * 1; //Получить как число
"00123" * 1 + ""; // Получить как строку
Ответ 11
Другим способом без регулярного выражения:
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)
Ответ 12
const input = '0093';
const match = input.match(/^(0+)(\d+)$/);
const result = match && match[2] || input;