Мне нужна была функция, которая могла бы отформатировать цену (указанную в центах) способом, предпочтительным для пользователя, и сложность заключается в том, что формат указан пользователем - и я не ожидаю, что мои пользователи поймут printf -подобный синтаксис или регулярные выражения и т. д.
Мое решение несколько похоже на то, которое используется в Basic, поэтому пользователь просто помечает # местами для цифр, например:
simple_format(1234567,"$ ###,###,###.##")
"$ 12,345.67"
simple_format(1234567,"### ### ###,## pln")
"12 345,67 pln"
Я полагаю, что это довольно легко понять пользователю и довольно просто реализовать:
function simple_format(integer,format){
var text = "";
for(var i=format.length;i--;){
if(format[i]=='#'){
text = (integer%10) + text;
integer=Math.floor(integer/10);
if(integer==0){
return format.substr(0,i).replace(/#(.*#)?/,"")+text;
}
}else{
text = format[i] + text;
}
}
return text;
}