| Новости | FAQ | Авторы | Документация | В действии | Библиотека |
| Инструменты | Полезные ссылки | Хостинги | Скачать | Примеры | Форум |
G_Z 29.10.2023 09:21 / 29.10.2023 09:54
Много лет пользуюсь методом:@format[number;format;locale;options][locals]
# 1000.1 ru → 1 000,1
# 1000.1 en → 1,000.1
$formats[
$.en[#,###.##]
$.ru[# ###,##]
$._default[#,##]
]
^if(!def $locale){
$locale[ru]
}
^if(!def $format){
$format[$formats.$locale]
}
^if($number > 0 && ^options.sign.bool(false)){
$format[+$format]
}
$document[^xdoc::create{<?xml version="1.0" encoding="utf-8"?>
<number>
<value>$number</value>
<format>$format</format>
<locale>$locale</locale>
</number>}]
$template[^xdoc::create{<?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:decimal-format name="ru" decimal-separator="," grouping-separator=" " NaN="—" minus-sign="−"/>
<xsl:decimal-format name="en" decimal-separator="." grouping-separator="," NaN="–" minus-sign="−"/>
<xsl:template match="/number">
<xsl:value-of select="format-number(value, format, locale)"/>
</xsl:template>
</xsl:stylesheet>}]
$result[^document.transform[$template]]
$result[^result.string[
$.method[text]
$.indent[no]
]]
$result[^result.replace[ ; ]]
# examples
^format(…)[# ###,###]
^format(…)[# ###]
^format(…)[0,#]
^format(…)[;en]
^format(…)Избыточно, конечно, и для большого числа форматирований лучше не использовать, зато гибко.