我想在JSTL中格式化一个数字:
<c:set var="num" value="12345678000199"/>
<fmt:formatNumber type="number" value="${num}" pattern=?/>
<!-- desired output: 12.345.678/0001-99 (Brazilian CNPJ [companies' IRS ID])-->
提前致谢!!
答案 0 :(得分:2)
使用标准JSTL标记或使用标准NumberFormat
API无法实现这一点。您需要为此创建custom JSP tag或EL function。您可以使用简单的String
操作方法完成工作,甚至(ab)使用Swing的MaskFormatter
:
String cnpj = "12345678000199";
MaskFormatter mf = new MaskFormatter("##.###.###/####-##");
mf.setValueContainsLiteralCharacters(false);
System.out.println(mf.valueToString(cnpj)); // 12.345.678/0001-99
使用EL功能,你最终可以这样结束:
<c:out value="${util:formatCnpj(user.cnpj)}" />
有关创建EL函数的更多详细信息,另请参阅Hidden features of JSP/Servlet的底部。
答案 1 :(得分:0)
这不是一个数字。这是一个包含数字的字符串。
如果您确实将这些信息存储为数字,则必须自己编写格式化方法。您可以通过将其声明为JSP EL function来使用JSP中的这种格式化方法。
请注意,如果字符串可以具有前导零,则使用数字来存储它是一个更糟糕的想法。
答案 2 :(得分:0)
使用您提供的JSTL代码和所需的结果,格式化的模式是“###。###。### / ####' - '##” 这假设您可能缺少前导零。如果不是这种情况,那么模式可以是 “000.000.000 / 0000 ' - ' 00”
确保你放入 - 单引号,因为它逃脱破折号,这通常是一个特殊字符(打印 - 仅限负数。
来源:http://www.tutorialspoint.com/jsp/jstl_format_formatnumber_tag.htm