sinneren
@sinneren

Как сделать простановку пробелов с конца в моей регулярке?

.split(/(\d{3})/).join(' ').replace(/\s+/g, ' ').replace(/^\s+/, '').replace(/\s+$/, ''));

Таким способом через каждые 3 цифры ставлю пробелы, но они идут в конце, то есть для 5000 получается 500 0. или 532 123 2 вместо 5 321 232. Как делать это правильно?
  • Вопрос задан
  • 142 просмотра
Решения вопроса 1
sinneren
@sinneren Автор вопроса
В итоге прокатило только это решение для моего кривого случая artkiev.com/blog/number_format-in-javascript.htm
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 2
sergiks
@sergiks Куратор тега JavaScript
♬♬
Регуляркой:
var n = 12345678;
n = n.toString(10).replace(/(\d)(?=(\d{3})+$)/g, '$1 '); // 12 345 678


Можно и без регулярок. Строку разбить в массив, развернуть, к каждому третьему символу приделать пробел (идём с конца, получается), собрать в строку:

var n = 123456789;

var a = n
  .toString(10)
  .split('').reverse()
  .map(function(e,i){ return (i%3 ? e : ""+e+" ")})
  .reverse()
  .join('')
  .trim()
;
// a = "123 456 789"


Disclaimer: некорректно может обработать знак минус!
Ответ написан
@dimentimor
Вот так еще можно:
var str = "12345678";
var res = "";

for (var i = str.length; i >= 0; i -= 3) {
	var sub = i > 3 ? str.substr(i - 3, 3) : str.substr(0, i);
	res = sub + " " + res;
}

res = res.slice(0, res.length -1);
// 12 345 678
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы