Как выделить тысячные доли числа в строке точками?

202
04 июля 2018, 07:20

Нужно сделать разделения, к примеру, числа 15600 точками, чтобы получилось 15.600.

У меня есть input и туда пользователь вводит сумму. Нужно чтобы тысячи разделялись точкой. + добавлялась надпись руб.

Я не могу понять как это сделать. У меня есть код, который я пытался сделать:

$('#lolkek').on('change', function () {
var $val = $(this).val();
var $string = '';
for(i = 0; i < $val.length; i++) {
if(i == 2) $string += '.';
 $string += $val[i];
  $(this).val($string)
}
});

Но он не работает так, как мне нужно в точности.

Answer 1

Лови

var x = 15600; 
 
function addCommas(nStr) { 
  nStr += ''; 
  x = nStr.split('.'); 
  x1 = x[0]; 
  x2 = x.length > 1 ? '.' + x[1] : ''; 
  var rgx = /(\d+)(\d{3})/; 
  while (rgx.test(x1)) { 
    x1 = x1.replace(rgx, '$1' + '.' + '$2'); 
  } 
  return x1 + x2; 
} 
 
console.log(addCommas(x));

https://jsfiddle.net/379cdvt1/
Answer 2

Используйте Number.toLocaleString с указанием нужной локали (например, в de-DE используется точка. В ru-RU - пробел). Если нужно просто разбить на группы под текущую локаль - вызывайте без указания локали:

console.log( (10000000).toLocaleString("de-DE") ); // "10.000.000" 
console.log( (10000000).toLocaleString() );        // в текущей локали

Answer 3

Простое решение (понятное для новичков):

На вход функции подаётся числовая строка. Если нужно подавать число, то пишем так: insertPoints('' + 15600);

function insertPoints(s) 
{ 
	//переворачиваем строку наоборот: 
	function reverseString(s) 
	{ 
		return s.split('').reverse().join('') 
	} 
 
	s = reverseString(s); 
	//следующая строка выбирает 2 или 3 цифры 
	//и объединяет все значения полученного массива в строку: 
	s = s.match(/\d{2,3}/g).join('.'); 
	s = reverseString(s); 
	return s 
} 
 
console.log(insertPoints('15600344999') + ' руб.'); 
console.log(insertPoints('15600344') + ' руб.'); 
console.log(insertPoints('15600') + ' руб.');

READ ALSO
Установить библиотеку DocX

Установить библиотеку DocX

Подскажите пожалуйста, где можно скачать файлы библиотеки DocX (XceedWords

222
Как читать из файла в Xamarin Forms?

Как читать из файла в Xamarin Forms?

есть программа - болванка, которая записывает в файл инфу и потом ее читаетПри запись происходит хорошо, но вот чтение не получается(программа...

199
Не осуществляется вход на сайт AngleSharp

Не осуществляется вход на сайт AngleSharp

Использую для авторизации библиотеку AngleSharp, на все сайты, до этого я успешно заходил используя следующий алгоритм (естественно другие адреса...

190
Как построить график в unity3d?

Как построить график в unity3d?

Необходимо построить график, а также, чтобы пользователь мог редактировать егоВносить новые данные

221