【发布时间】:2008-10-29 15:50:17
【问题描述】:
不幸的是,在我的项目中,我们在 JavaScript 中生成了很多这样的 HTML 代码:
var html = new StringBuffer();
html.append("<td class=\"gr-my-deals\"><a href=\"").append(deal.url).append("\" target=\"_blank\">").append(deal.description).append("</a></td>");
我对此有 2 个具体的投诉:
- 在 HTML 字符串中使用转义双引号 (\”)。这些应替换为单引号 (') 以提高可读性。
- 使用 .append() 代替 JavaScript 字符串连接运算符“+”
应用这两个建议,生成以下等效的代码行,我认为它更具可读性:
var html = "<td class=’gr-my-deals’><a href=’" + deal.url + "’ target=’_blank’>" + deal.description + "</a></td>";
我现在正在寻找一种将第一行代码自动转换为第二行的方法。到目前为止,我想出的只是对我们所有的 Javascript 代码运行以下查找和替换:
Find: ).append(
Replace: +
这会将上面显示的代码行转换为:
html.append("<td class=\"gr-my-deals\"><a href=\"" + deal.url + "\" target=\"_blank\">" + deal.description + "</a></td>)";
这应该安全地删除除第一个“append()”语句之外的所有语句。不幸的是,我想不出任何安全的方法来自动将转义的双引号转换为单引号。请记住,我不能简单地进行查找/替换,因为在某些情况下您确实需要使用转义的双引号。通常,这是在您生成包含嵌套 JS 的 HTML 时,并且该 JS 包含字符串参数,例如
function makeLink(stringParam) {
var sb = new StringBuffer();
sb.append("<a href=\"JavaScript:myFunc('" + stringParam + "');\">");
}
我的问题(最后)是:
- 有没有更好的方法可以安全地将对“append()”的调用替换为“+”
- 有什么方法可以安全地将转义的双引号替换为单引号,正则表达式?
干杯, 唐
【问题讨论】:
标签: javascript html string-concatenation