将千位分隔符添加到任何数字,即使它包含特殊字符
Add Thousand separator to any number even if it contains special characters
我有一个挪威价格格式的网站,因此产品价格显示为 1000,-
。
这是一个基于 Magento 的站点,版本 ce-1.9.2.1。
现在我想通过使用 number_format
函数或正则表达式为该价格添加千位分隔符(很可能是空格,但可以是任何字符)以保持其格式,以保持完整性最好(如 1 000,-
, 1 000 000,-
等等).
有人有什么建议吗?
根据我对 google 的 5 分钟研究,the formal currency format for Norwegian Krone 是 #.###,##
。
此格式与您建议的格式之间的唯一区别是克朗分隔符是“</code>”而不是“<code>.
”,并且特殊值“,00
”的 øre 替换为“,-
”。
基于该观察,我将简单地运行以下代码,在正式定义中给出格式正确的值:
// expects "1.234,00" returns "1 234,-"
// "1.234.567,00" ==> "1 234 567,-"
// 5,50 ==> 5,50
function kroneDisplayFormat($formalFormat) {
$intermediate = str_replace(".", " "); // replace . separator with ' ' (space)
if( endsWith( $intermediate, ",00")) {
// special display case ",00" ==> ",-"
$final = str_replace(",00", ",-");
} else {
$final = $intermediate
}
return $final
}
使用 preg_replace
中的环顾四周,您可以这样做:
$str = preg_replace('/\..*$(*SKIP)(*F)|(?<=\d)(?=(?:\d{3})+(?!\d))/', ' ', $str);
\..*$(*SKIP)(*F)
将 ignore/skip 在 DOT
之后进行此转换。
我有一个挪威价格格式的网站,因此产品价格显示为 1000,-
。
这是一个基于 Magento 的站点,版本 ce-1.9.2.1。
现在我想通过使用 number_format
函数或正则表达式为该价格添加千位分隔符(很可能是空格,但可以是任何字符)以保持其格式,以保持完整性最好(如 1 000,-
, 1 000 000,-
等等).
有人有什么建议吗?
根据我对 google 的 5 分钟研究,the formal currency format for Norwegian Krone 是 #.###,##
。
此格式与您建议的格式之间的唯一区别是克朗分隔符是“</code>”而不是“<code>.
”,并且特殊值“,00
”的 øre 替换为“,-
”。
基于该观察,我将简单地运行以下代码,在正式定义中给出格式正确的值:
// expects "1.234,00" returns "1 234,-"
// "1.234.567,00" ==> "1 234 567,-"
// 5,50 ==> 5,50
function kroneDisplayFormat($formalFormat) {
$intermediate = str_replace(".", " "); // replace . separator with ' ' (space)
if( endsWith( $intermediate, ",00")) {
// special display case ",00" ==> ",-"
$final = str_replace(",00", ",-");
} else {
$final = $intermediate
}
return $final
}
使用 preg_replace
中的环顾四周,您可以这样做:
$str = preg_replace('/\..*$(*SKIP)(*F)|(?<=\d)(?=(?:\d{3})+(?!\d))/', ' ', $str);
\..*$(*SKIP)(*F)
将 ignore/skip 在 DOT
之后进行此转换。