11

What is the simplest way to replace quote characters with \" sequence inside string values?

Dims
  • 47,675
  • 117
  • 331
  • 600

2 Answers2

16

That'll be the fn:replace() function.

<%@taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions" %>
...
${fn:replace(foo, '"', '\\"')}

Unrelated to the concrete question, this is an often recurring requirement in order to prevent malformed HTML when redisplaying user controlled input as a HTML attribute. Normally, you should use <c:out> or fn:escapeXml() for this instead. E.g.

<input name="foo" value="<c:out value="${param.foo}" />" />
<input name="foo" value="${fn:escapeXml(param.foo)}" />

It not only takes quotes into account, but also all other XML special characters like <, >, &, etc.

See also:

Community
  • 1
  • 1
BalusC
  • 1,082,665
  • 372
  • 3,610
  • 3,555
  • I am creating JSON with JSP, so the direct requirement is to escape quotes. Some data is used to display on page later so it may also require HTML escaping too. Thanks for a link! – Dims Jan 17 '12 at 16:49
  • I'd rather use a fullworthy JSON tool and for sure not do the job in a JSP. Start here for some concrete examples: http://stackoverflow.com/questions/4112686/how-to-use-servlets-and-ajax Or if your environment allows it, go for a JAX-RS webservice: http://stackoverflow.com/questions/7874695/servlet-vs-restful – BalusC Jan 17 '12 at 16:50
-7

Use javascript replace (with /g to replace all occurrences)

string.replace(/"/g, '\\"')
Troy Barlow
  • 313
  • 2
  • 9