Удалить / усечь ведущие нули с помощью javascript / jquery

javascript jquery numbers zero

93567 просмотра

12 ответа

Предложите решение для удаления или усечения ведущих нулей из числа (любой строки) с помощью javascript, jquery.

Автор: Somnath Muluk Источник Размещён: 17.05.2019 02:56

Ответы (12)


141 плюса

Решение

Вы можете использовать регулярное выражение, совпадающее с нулями в начале строки:

s = s.replace(/^0+/, '');
Автор: Guffa Размещён: 26.11.2011 05:18

21 плюса

Я бы использовал функцию Number ():

var yourString = "00001";
yourString = Number(yourString).toString();
Автор: Charles Hamel Размещён: 23.07.2014 06:47

11 плюса

Может быть, немного поздно, но я хочу добавить свои 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, используйте другие решения, но если вам нужны только их числа, это самый короткий путь.

и к вашему сведению вы можете сделать наоборот, заставить числа действовать как строки, если вы объедините с ними пустую строку, например:

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

надеюсь, это кому-нибудь поможет

Автор: DiegoDD Размещён: 05.11.2013 12:58

10 плюса

Так как вы сказали «любая строка», я предполагаю, что эту строку вы тоже хотите обработать.

"00012  34 0000432    0035"

Итак, регулярное выражение это путь:

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

И это предотвратит потерю значения «000000».

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

Вы можете увидеть рабочий пример здесь

Автор: John Fisher Размещён: 26.11.2011 05:44

3 плюса

Я получил это решение для усечения ведущих нулей (числа или любой строки) в 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>
Автор: Somnath Muluk Размещён: 29.11.2011 04:18

2 плюса

Попробуй это,

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

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

Больше здесь

Автор: Gowri Размещён: 26.11.2011 05:19

2 плюса

parseInt(value) or parseFloat(value)

Это будет хорошо работать.

Автор: Krupall Размещён: 06.10.2015 01:09

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

Автор: antoine Размещён: 08.10.2013 12:26

1 плюс

Если число int, используйте

"" + parseInt(str)

Если число с плавающей запятой, используйте

"" + parseFloat(str)
Автор: loki_dev Размещён: 24.05.2016 01:43

1 плюс

Просто попробуйте умножить на единицу следующим образом:

"00123" * 1; // Получить как число
"00123" * 1 + ""; // Получить как строку

Автор: Siyavash Hamdi Размещён: 10.02.2019 03:09

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 )

Автор: madreason Размещён: 20.04.2017 11:31

0 плюса

const input = '0093';
const match = input.match(/^(0+)(\d+)$/);
const result = match && match[2] || input;
Автор: Boney Размещён: 27.02.2019 05:41
Вопросы из категории :
32x32