2013-11-21 5 views
5

Кажется, что не нашел хорошего ответа на этот вопрос. Как удалить последние 11 цифр из int?Удалить последние цифры из int

Идентификатор может быть одним или несколькими номерами в начале, но всегда будет 11 цифр после идентификатора. Всегда будет идентификатор в начале. {id}{11 digits}.

var getId = function (digits) { 
    // Do some stuff and return id 
} 

getId(110000000001); // Should return 1 
getId(1110000000001); // Should return 11 
getId(2010000000001); // Should return 20 
+1

разделяй и пол или ToString и подстроки его – epascarello

ответ

9

Деление на 1e11 и взять слово:

var stripped = Math.floor(id/1e11); 

Это позволяет избежать преобразования сигнала в/из строкового представления.

Обратите внимание, что характер числа JavaScript такой, что ваши «необработанные» значения (значения с 11 бесполезными цифрами) не могут содержать более 5 цифр в дополнение к этим 11, прежде чем вы начнете работать в точные проблемы. Я думаю, если вы никогда не заботитесь о 11-ти младших разрядах, которые не могут быть проблемой.

3

Вы можете преобразовать число в строку и удалить хвостохранилища цифры:

digits.toString().replace(/\d{11}$/, '') 

Кстати, лучше не использовать Интс (или, если быть точным, Numbers), потому что если число больше чем 2147483648 (по абсолютной величине), он будет представлен внутренне как double, что приведет к потере точности. Если вам не нужны хвостовые цифры, тогда все в порядке - используйте подход разделения, предложенный в других ответах (это может сломаться из-за научной нотации). Но если вы хотите сохранить все данные, вы должны представить свои номера со строками.

2

Для этого вы можете использовать деление и 10^11. Edit: мой плохой

1
var getId = function (digits) { 
    var id = parseInt((digits/(1e11)),0); 
} 
1

Вы можете преобразовать число в строку и порезать последние 11 символов с конца

parseInt(digits.toString().slice(0, -11));

Использование .slice(0 , [ negative_number ]); будет порезать x символы конца строки

Больше информации о .slice()Here

4

Попробуйте следующее:

var str = 1100000000011; 
var res = str.toString().substr(0, str.toString().length - 11); 

Demo

Смежные вопросы