多次转义 " 或 '
Escaping " or ' multiple times
所以我经常要通过servlets或者jsps来为网页生成内容。在那个过程中,我有时 运行 在使用字符串时尝试转义多层 " 或 ' 时遇到问题。
例如,我在这里创建一个带有弹出窗口的元素:
String pvPopup = "Y'en aura pas de facile!";
out += "<img class=\"clickable\" src=\"../images/question.png\" onclick=\"alert(" + pvPopup + ");\" />";
我不能使用替代项 ',因为文本中充满了它们,因此它打乱了顺序。我无法再次使用简单的 " 来转义警报中的字符串,因为我已经在使用它了。
我试过使用三重反斜杠或 unicode \u0022 进行转义,但两者都会导致不同的问题,而且似乎无法正常工作。
这里有我缺少的简单解决方案吗?我应该怎么做?
我认为最好使用某种解析器然后连接这些值。
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);
从你想要发射的东西开始倒推:
<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
方法正在做的事情。
所以我经常要通过servlets或者jsps来为网页生成内容。在那个过程中,我有时 运行 在使用字符串时尝试转义多层 " 或 ' 时遇到问题。 例如,我在这里创建一个带有弹出窗口的元素:
String pvPopup = "Y'en aura pas de facile!";
out += "<img class=\"clickable\" src=\"../images/question.png\" onclick=\"alert(" + pvPopup + ");\" />";
我不能使用替代项 ',因为文本中充满了它们,因此它打乱了顺序。我无法再次使用简单的 " 来转义警报中的字符串,因为我已经在使用它了。
我试过使用三重反斜杠或 unicode \u0022 进行转义,但两者都会导致不同的问题,而且似乎无法正常工作。
这里有我缺少的简单解决方案吗?我应该怎么做?
我认为最好使用某种解析器然后连接这些值。
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);
从你想要发射的东西开始倒推:
<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
方法正在做的事情。