JSTL 函数:${fn:replace()} 不仅替换为新模式还添加了原始值
JSTL function : ${fn:replace()} Not only replaces with new pattern also adds the original value
例如,我想用 blank
替换值 A,B. .C
中的 ,
<%@page contentType="text/html" pageEncoding="UTF-8"%>
<!DOCTYPE html>
<%@ taglib prefix = "c" uri = "http://java.sun.com/jsp/jstl/core" %>
<%@ taglib prefix = "fn" uri = "http://java.sun.com/jsp/jstl/functions" %>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>JSP Page</title>
</head>
<body>
<c:set var="pat" value="A,B. .C" />
<c:out value="${pat}"/></br >
${fn:replace(pat, ",", " ")}
<c:out value="${pat}"/></br >
</body>
</html>
预期输出:
A,B. .C
A B. .C
实际输出:
A,B. .C
A B. .C A,B. .C
浏览器图片
替换后的值包含变量${pat}
也是原始值。
我做错了什么?以前从未见过这个。
有了这些结果,该功能就没用了。
(使用 jdk1.6.0_45 和 jdk1.7.0_51 Java EE 版本测试:Java EE 6 Web)
编辑
来自@rickz 的回答
我用
测试过
<c:set var="pat" value="A,B. .C" />
<c:out value="${pat}" /></br >
------------------------------</br >
${fn:replace(pat, ",", " ")}</br >
------------------------------</br >
<c:out value="${pat}" /></br >
------------------------------</br >
输出:
A,B. .C
------------------------------
A B. .C
------------------------------
A,B. .C
------------------------------
我们可以看到 ${pat} 的值没有改变
网络上的大多数手册都没有指望这一点(或没有解释)。
example 1
用字符串值中的 \" 序列替换引号字符的最简单方法是什么?
和许多其他人
请这样尝试。
<%@page contentType="text/html" pageEncoding="UTF-8"%>
<!DOCTYPE html>
<%@ taglib prefix = "c" uri = "http://java.sun.com/jsp/jstl/core" %>
<%@ taglib prefix = "fn" uri = "http://java.sun.com/jsp/jstl/functions" %>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>JSP Page</title>
</head>
<body>
<c:set var="pat" value="A,B. .C" />
${pat}</br >
${fn:replace(pat, ",", " ")}
</body>
</html>
例如,我想用 blank
A,B. .C
中的 ,
<%@page contentType="text/html" pageEncoding="UTF-8"%>
<!DOCTYPE html>
<%@ taglib prefix = "c" uri = "http://java.sun.com/jsp/jstl/core" %>
<%@ taglib prefix = "fn" uri = "http://java.sun.com/jsp/jstl/functions" %>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>JSP Page</title>
</head>
<body>
<c:set var="pat" value="A,B. .C" />
<c:out value="${pat}"/></br >
${fn:replace(pat, ",", " ")}
<c:out value="${pat}"/></br >
</body>
</html>
预期输出:
A,B. .C
A B. .C
实际输出:
A,B. .C
A B. .C A,B. .C
浏览器图片
替换后的值包含变量${pat}
也是原始值。
我做错了什么?以前从未见过这个。
有了这些结果,该功能就没用了。
(使用 jdk1.6.0_45 和 jdk1.7.0_51 Java EE 版本测试:Java EE 6 Web)
编辑
来自@rickz 的回答
我用
测试过<c:set var="pat" value="A,B. .C" />
<c:out value="${pat}" /></br >
------------------------------</br >
${fn:replace(pat, ",", " ")}</br >
------------------------------</br >
<c:out value="${pat}" /></br >
------------------------------</br >
输出:
A,B. .C
------------------------------
A B. .C
------------------------------
A,B. .C
------------------------------
我们可以看到 ${pat} 的值没有改变
网络上的大多数手册都没有指望这一点(或没有解释)。
example 1
用字符串值中的 \" 序列替换引号字符的最简单方法是什么?
和许多其他人
请这样尝试。
<%@page contentType="text/html" pageEncoding="UTF-8"%>
<!DOCTYPE html>
<%@ taglib prefix = "c" uri = "http://java.sun.com/jsp/jstl/core" %>
<%@ taglib prefix = "fn" uri = "http://java.sun.com/jsp/jstl/functions" %>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>JSP Page</title>
</head>
<body>
<c:set var="pat" value="A,B. .C" />
${pat}</br >
${fn:replace(pat, ",", " ")}
</body>
</html>