我想删除毫无意义的十进制数字,如下所示:
14.50 => 14.5
14.0500 => 14.05
14.000 => 14
我正在搜索如何做到这一点,我发现了以下方式:
{{ number|trim('0')|trim('.') }}
但上述过滤器的唯一问题是以下情况:
0.023 => 023
有谁知道我怎么能实现这个目标?
答案 0 :(得分:1)
你没有在任何地方提到它,但我认为你的“数字”变量实际上是字符串,否则默认行为实际上就是你所期待的......
我的建议只是将这些string
变量转换为PHP代码中某处的float
变量,而Twig将按照您的预期呈现它们。
也就是说,如果确实需要在Twig中执行此操作,则可以通过对字符串执行任何算术运算来自动将字符串转换为数字。请参阅以下示例:
{% set stringNumber = '14.0500' %}
{% set number = 14.0500 %}
{{ stringNumber }} {# Prints 14.0500 #}
{{ number }} {# Prints 14.05 #}
{{ stringNumber + 0 }} {# Prints 14.05 #}
此处的完整示例:https://twigfiddle.com/hwl82b
答案 1 :(得分:0)
您可以编写自己的树枝过滤器来处理此问题。
看看how to create your custom twig extension。
在您的情况下,过滤器应如下所示:
class NumberExtension extends \Twig_Extension
{
public function getFilters()
{
return [
new \Twig_SimpleFilter('trim_number', [$this, 'trimNumber'])
];
}
/**
* @param $number
* @return int
*/
public function trimNumber($number)
{
if($number < 1){
return 0;
}
return trim($number, '\.0');
}
}
你可以像这样使用过滤器:
{{ number | trim_number }}