Чи можна форматувати номери за допомогою CSS? Тобто: десяткові знаки, десятковий роздільник, роздільник тисяч тощо.
Чи можна форматувати номери за допомогою CSS? Тобто: десяткові знаки, десятковий роздільник, роздільник тисяч тощо.
Відповіді:
Можна використовувати Number.prototype.toLocaleString()
. Він також може форматувати інші формати чисел, наприклад, латинську, арабську тощо.
Робоча група CSS опублікувала Проект щодо форматування контенту у 2008 році. Але зараз нічого нового.
Ну а для будь-яких номерів у Javascript я використовую наступне:
var a = "1222333444555666777888999";
a = a.replace(new RegExp("^(\\d{" + (a.length%3?a.length%3:0) + "})(\\d{3})", "g"), "$1 $2").replace(/(\d{3})+?/gi, "$1 ").trim();
і якщо вам потрібно використовувати будь-який інший роздільник як кому, наприклад:
var sep = ",";
a = a.replace(/\s/g, sep);
або як функція:
function numberFormat(_number, _sep) {
_number = typeof _number != "undefined" && _number > 0 ? _number : "";
_number = _number.replace(new RegExp("^(\\d{" + (_number.length%3? _number.length%3:0) + "})(\\d{3})", "g"), "$1 $2").replace(/(\d{3})+?/gi, "$1 ").trim();
if(typeof _sep != "undefined" && _sep != " ") {
_number = _number.replace(/\s/g, _sep);
}
return _number;
}
_number.replace
ми повинні переконатися, що це такий рядок, _number = typeof _number != "undefined" && _number > 0 ? String(_number) : "";
інакше ви отримаєте помилку, _number.replace
яка не визначена чи не функція
Ні, вам потрібно використовувати javascript, коли він знаходиться в DOM або відформатувати його через вашу мову на сервері (PHP / ruby / python тощо)
rtl
, який відображає той самий вміст по-іншому: чи до нього також слід ставитися з боку сервера?
Не відповідь, а цікаві perhpas. Я надіслав пропозицію до робочої групи CSS кілька років тому. Однак нічого не сталося. Якщо б вони (і постачальники браузерів) бачили це як справжнє занепокоєння розробника, можливо, м'яч міг би почати котитися?
Якщо це допоможе ...
Я використовую функцію PHP number_format()
і вузький пробіл без перерви (  
). Його часто використовують як однозначний роздільник тисяч.
echo number_format(200000, 0, "", " ");
Оскільки у IE8 є деякі проблеми з наданням вузького простору без перерви, я змінив його на SPAN
echo "<span class='number'>".number_format(200000, 0, "", "<span></span>")."</span>";
.number SPAN{
padding: 0 1px;
}
Ви не можете використовувати CSS для цієї мети. Рекомендую використовувати JavaScript, якщо він застосовується. Погляньте на це для отримання додаткової інформації: JavaScript, еквівалентний printf / string.format
Також, як згадував Петр, ви можете працювати з ним на стороні сервера, але це повністю залежить від вашого сценарію.
Я не думаю, що ти можеш. Ви можете використовувати number_format (), якщо ви кодуєте в PHP. І інші мови програмування також мають функцію форматування чисел.
Ви можете використовувати бібліотеку тегів Jstl для форматування сторінок JSP
JSP Page
//import the jstl lib
<%@ taglib uri="http://java.sun.com/jstl/fmt" prefix="fmt" %>
<c:set var="balance" value="120000.2309" />
<p>Formatted Number (1): <fmt:formatNumber value="${balance}"
type="currency"/></p>
<p>Formatted Number (2): <fmt:formatNumber type="number"
maxIntegerDigits="3" value="${balance}" /></p>
<p>Formatted Number (3): <fmt:formatNumber type="number"
maxFractionDigits="3" value="${balance}" /></p>
<p>Formatted Number (4): <fmt:formatNumber type="number"
groupingUsed="false" value="${balance}" /></p>
<p>Formatted Number (5): <fmt:formatNumber type="percent"
maxIntegerDigits="3" value="${balance}" /></p>
<p>Formatted Number (6): <fmt:formatNumber type="percent"
minFractionDigits="10" value="${balance}" /></p>
<p>Formatted Number (7): <fmt:formatNumber type="percent"
maxIntegerDigits="3" value="${balance}" /></p>
<p>Formatted Number (8): <fmt:formatNumber type="number"
pattern="###.###E0" value="${balance}" /></p>
Результат
Форматований номер (1): 120 000,23 фунтів стерлінгів
Форматоване число (2): 000.231
Відформатоване число (3): 120 000,231
Форматований номер (4): 120000.231
Відформатоване число (5): 023%
Форматована кількість (6): 12000,023.0900000000%
Відформатоване число (7): 023%
Відформатоване число (8): 120E3