微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

多次转义 " 或 '

如何解决多次转义 " 或 '

所以我经常不得不通过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 举报,一经查实,本站将立刻删除。