gpt4 book ai didi

string - 在 Freemarker 中是否有一种方便的方法来格式化人类可读的字节大小字符串?

转载 作者:行者123 更新时间:2023-12-02 09:37:32 24 4
gpt4 key购买 nike

这个问题对于 Java 有很多答案( How to convert byte size into human readable format in java?Format file size as MB, GB etc )和 even for Groovy/Grails ,更不用说PHP ,但是在 FreeMarker 中是否有内置或方便的方法来执行此操作?

为了清楚起见,我追求的是通用术语中的通用 SI 方法,而不是 2 的二进制幂。例如

      1 ➤ 1B
123 ➤ 123B
1000 ➤ 1KB
1728 ➤ 1.7KB
7077888 ➤ 7.1MB

等等。

鉴于 FreeMarker 似乎没有对数函数,有没有办法在纯 FreeMarker 中执行此操作,或者是我使用 Java 创建模板方法的唯一选择。

最佳答案

如果有人感兴趣,我自己尝试使用字符串操作编写一些代码。如果您可以避免的话,我不建议您这样做,但如果您遇到困难,它可能会有所帮助:

<#--
# Format Number of Bytes in SI Units
# -->
<#function si num>
<#assign order = num?round?c?length />
<#assign thousands = ((order - 1) / 3)?floor />
<#if (thousands < 0)><#assign thousands = 0 /></#if>
<#assign siMap = [ {"factor": 1, "unit": ""}, {"factor": 1000, "unit": "K"}, {"factor": 1000000, "unit": "M"}, {"factor": 1000000000, "unit":"G"}, {"factor": 1000000000000, "unit": "T"} ]/>
<#assign siStr = (num / (siMap[thousands].factor))?string("0.#") + siMap[thousands].unit />
<#return siStr />
</#function>

关于string - 在 Freemarker 中是否有一种方便的方法来格式化人类可读的字节大小字符串?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20602784/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com