К сожалению, в моем проекте мы генерируем много HTML-кода на JavaScript, например:
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 ()'. К сожалению, я не могу придумать какой-либо безопасный способ автоматически преобразовать экранированные двойные кавычки в одинарные. Имейте в виду, что я не могу просто найти / заменить, потому что в некоторых случаях вам действительно нужно использовать экранированные двойные кавычки. Как правило, это когда вы генерируете HTML, который включает в себя вложенный JS, и этот JS содержит строковые параметры, например
function makeLink(stringParam) {
var sb = new StringBuffer();
sb.append("<a href=\"JavaScript:myFunc('" + stringParam + "');\">");
}
Мои вопросы (наконец-то):
- Есть ли лучший способ безопасно заменить вызовы 'append ()' на '+'
- Есть ли способ безопасно заменить экранированные двойные кавычки одиночными, регулярное выражение?
Ура,
Дон