我正在尝试格式化(###)#######格式的电话号码。我这样做..
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>
<fmt:formatNumber type="number" pattern="(###) #######" value="${phoneNumber}" />
但它没有转换是正确的格式。显示这样的价值..
输出
(9000000000)
它应该向我显示..(900)0000000
我正在拨打正常的10位数电话号码。它应该在前端以适当的格式显示我。帮帮我
答案 0 :(得分:2)
让我们使用fn:substring
和fn:length
进行尝试。
<c:set value="9123456789" var="phone"/>
<c:out value="(${fn:substring(phone, 0, 4)}) ${fn:substring(phone, 4, fn:length(phone))}"/>
输出:
(9123) 456789
答案 1 :(得分:0)
我也需要这个。看来你不能用fmt:formatNumber来做到这一点,它只适用于纯数字:让你输入小数点和千位分隔符等等。我们想要做的就是解析字符串并以某种方式对其进行格式化,所以我猜Braj就是这样。当然,你也可以编写自己的标签。
在这种情况下,这可能是一种矫枉过正,但如果您需要全部执行此操作或者已经创建了标记库,则可能无法实现。
public class FormatTelTag extends TagSupport {
private String tel;
public FormatTelTag() { }
public int doStartTag() throws JspTagException {
if (tel != null && !tel.isEmpty()) {
JspWriter out = pageContext.getOut();
try {
out.write(formatTelephone(tel));
} catch (IOException e) {
throw new JspTagException(e.getMessage(), e);
}
}
return EVAL_PAGE;
}
public static String formatTelephone(final String tel) {
String formatted = null;
if (tel == null || tel.isEmpty()) {
formatted = tel;
} else {
formatted = "";
for (char c : tel.toCharArray()) {
if (Character.isDigit(c)) {
formatted = formatted + c;
if (formatted.length() == 3 || formatted.length() == 7) {
formatted = formatted + "-";
}
}
}
}
return formatted;
}
public String getTel() {
return tel;
}
public void setTel(String tel) {
this.tel = tel;
}
}
这将是库描述符cus.tld
<?xml version="1.0" encoding="UTF-8"?>
<taglib version="2.1" xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-jsptaglibrary_2_1.xsd">
<description>Custom tags</description>
<tlib-version>1.0</tlib-version>
<short-name>cus</short-name>
<tag>
<name>formatTel</name>
<tag-class>myPackage.FormatTelTag</tag-class>
<body-content>empty</body-content>
<attribute>
<description>A telephone</description>
<name>tel</name>
<required>true</required>
<rtexprvalue>true</rtexprvalue>
<type>java.lang.String</type>
</attribute>
</tag>
</taglib>
放在web-inf下的内容可以像
一样使用<%@ taglib prefix="cus" uri="/WEB-INF/cus"%>
...
<cus:formatTel tel="1234098766" />
我还需要在web.xml中映射此URI