[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Замена трех нулей
Kusss
у меня есть числа от 1000+, и нужно каждые 3 последних нуля заменять на 'k'
20000000 => 20кк.
15000 => 15k
Написал замену последних нулей, а как сделать всех ?
num.toString().replace(/0{3}$/, 'k')
Valick
Цитата (Kusss @ 26.12.2019 - 11:57)
Написал замену последних нулей, а как сделать всех ?

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

_____________
Стимулятор ~yoomoney - 41001303250491
twin
Все гораздо проще. Достаточно одной таблэтки запятой :D

num.toString().replace(/0{3,}$/, 'k')


PS Упс, про много k не сразу понял


_____________
Если вам недостаточно собственных заблуждений, можно расширить их мнениями экспертов.

Нужно уважать мнение оппонета. Ведь заблуждаться - его святое право.

Настаивал, настаиваю и буду настаивать на своем. На кедровых орешках.

user posted image
Valick
Дядя Коля, есть подозрение, что с такой математикой ты работаешь в нашей бухгалтерии))
У них тоже всё очень просто))

_____________
Стимулятор ~yoomoney - 41001303250491
brevis
// 1. сначала заменяем /000$/ на k
num = num.replace(/000$/, 'k');

// 2. потом заменяем все /000k/ на kk
while (/000k/.test(num)) {
num = num.replace(/000k/, 'kk');
}
https://jsbin.com/lakudasuvi/edit?js,console

P.S. Вариант с делением на мой взгляд красивее. Но были случаи (лично в моей практике), когда такое понимается людьми туже.

_____________
Чатик в телеге
twin
Цитата (Valick @ 26.12.2019 - 09:45)
Дядя Коля, есть подозрение, что с такой математикой ты работаешь в нашей бухгалтерии))
У них тоже всё очень просто))

Где бухгалтерия, и где я :D

Вот еще вариантик, раз уж писанулся. Как говорится: писанулся - доделывай.

function repK(m) {
return Array(m.length / 3 + 1).join('k');
}


num.toString().replace(/(0{3})+$/, repK);


Бяда такого подхода, что нули то оно заменит, но что за число 2300k? Еще запятые нужно учесть. Разряд тобишь. Это всех вариантов касаемо, не только моего.

_____________
Если вам недостаточно собственных заблуждений, можно расширить их мнениями экспертов.

Нужно уважать мнение оппонета. Ведь заблуждаться - его святое право.

Настаивал, настаиваю и буду настаивать на своем. На кедровых орешках.

user posted image
Kusss
Я вот такой вариант написал, сейчас буду ваши смотреть
let num = 20000000,
k = '';
for (i = num.toString().length -3; i >= 0 ; i = i - 3){
if (num.toString().substr(i,3) == '000')
k += 'k';
else
break
;
}
if (k.length > 0)
num = num/Math.pow(1000, k.length) + k;

console.log(num);
Kusss
Цитата (twin @ 26.12.2019 - 14:23)
но что за число 2300k?

Проблема вывести длинные числа.
Вот реальный пример : от 300 000 000 до 350 000 000
Большие числа НЕ кратные 1000 будут крайне редко.
Valick
Немного изменил код twin

num.toString().replace(/(0{3})+$/, function(m) {
return 'k'.repeat(m.length / 3);
});


Но голосую за второй вариант brevis


_____________
Стимулятор ~yoomoney - 41001303250491
twin
repeat не работает в IE, потому я там и намудрил с массивом.

_____________
Если вам недостаточно собственных заблуждений, можно расширить их мнениями экспертов.

Нужно уважать мнение оппонета. Ведь заблуждаться - его святое право.

Настаивал, настаиваю и буду настаивать на своем. На кедровых орешках.

user posted image
Valick
Цитата (twin @ 26.12.2019 - 14:02)
repeat не работает в IE

и это правильно, те кто юзают IE должны страдать

_____________
Стимулятор ~yoomoney - 41001303250491
Kusss
Спасибо всем кто принял участие.
killer8080
Ну я тут тогда тоже наслежу :D

var n = 20000000;

console.log( (n +'').split('').reverse().join('').replace(/0{3}/g, 'k').split('').reverse().join('') );


Цитата (twin @ 26.12.2019 - 13:23)
Бяда такого подхода, что нули то оно заменит, но что за число 2300k? Еще запятые нужно учесть. Разряд тобишь. Это всех вариантов касаемо, не только моего.

да задача изначально сомнительна, миллион логично было бы M, а не KK :)
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.