如何解决多次转义 " 或 '
所以我经常不得不通过servlets或jsps为网页生成内容。在那个过程中,我有时会在处理字符串时尝试转义多层 " 或 ' 时遇到问题。 例如,我在这里创建一个带有弹出窗口的元素:
String pvPopup = "Y'en aura pas de facile!";
out += "<img class=\"clickable\" src=\"../images/question.png\" onclick=\"alert(" + pvPopup + ");\" />";
我不能使用替代的 ' 因为文本中充满了它们,所以它打破了顺序。我无法再次使用简单的 " 来转义警报中的字符串,因为我已经在使用它了。
我尝试使用三重反斜杠或 unicode \u0022 进行转义,但两者都会导致不同的问题并且似乎无法正常工作。
这里有我遗漏的简单解决方案吗?我应该怎么做?
解决方法
从您想要发出的内容向后工作:
<img class="clickable" src="../images/question.png"
onclick="alert('Y\'en aura pas de facile!');">
所以你想要这样的东西:
String pvPopup = "Y'en aura pas de facile!";
out += "<img class=\"clickable\" src=\"../images/question.png\"";
out += " onclick=\"alert('" + jsQuote(pvPopup) + "');\">";
其中 jsQuote(String)
将 "Y'en aura pas de facile!"
转换为 "Y\'en aura pas de facile!"
。
(您应该能够找到一个现有的实用方法来进行 JS 引用,尽管它可能会在第 3 方库中。)
话虽如此,最好使用 JSP 或其他模板方案为 HTTP 响应生成 HTML 等。如果你这样做了,那么你应该寻找一个 JSTL 标记库,它可以完成上面的(假设的)jsQuote
方法所做的事情。
我认为最好使用某种解析器,然后连接值。
String str =" onclick=\"alert(" + pvPopup + ");\"";
Scanner s = new Scanner(str).useDelimiter("\\|");
String[] result = s.next().split("\\|");
System.out.println(result[0]);
System.out.println(result[1]);
结果:
alert(pvPopup);
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。