Как заменить атрибуты полученного html-кода [duplicate]

Если вы подключите свой проект Cloud с Firebase , вы можете подключить свои облачные функции HTTP к Firebase Hosting , чтобы получить URL-адреса тщеславия.

13
задан Gumbo 16 September 2009 в 15:13
поделиться

4 ответа

Использовать:

str = str.replace(/[“”]/g, '"');
str = str.replace(/[‘’]/g, "'");

или сделать это в одном утверждении:

str = str.replace(/[“”]/g, '"').replace(/[‘’]/g,"'");

В JavaScript (как и во многих других языках) строки неизменяемы - строка "replacement" методы фактически просто возвращают новую строку вместо изменения строки на месте.

Ссылка MDN JavaScript reference для replace:

Возвращает новую строку с некоторыми или всеми совпадениями шаблона, замененного заменой.

...

Этот метод не изменяет объект String, на который он вызывается. Он просто возвращает новую строку.

29
ответ дан kay 27 August 2018 в 10:58
поделиться

replace вернуть результирующую строку

str = str.replace(/["']/, '');
3
ответ дан RageZ 27 August 2018 в 10:58
поделиться

OP не говорит, почему он не работает, но, похоже, проблемы связаны с кодировкой файла. Если у меня есть ANSI-кодированный файл, и я делаю:

var s = "“This is a test” ‘Another test’";
s = s.replace(/[“”]/g, '"').replace(/[‘’]/g,"'");
document.writeln(s);

Я получаю:

"This is a test" "Another test"

Я преобразовал кодировку в UTF-8, исправил умные кавычки (которые разбились когда я изменил кодировку), а затем преобразован обратно в ANSI, и проблема исчезла.

Обратите внимание, что когда я копировал и вставлял двойные и одиночные смарт-цитаты с этой страницы в свой тестовый документ (кодированный ANSI) и запускал этот код:

var s = "“This is a test” ‘Another test’";
for (var i = 0; i < s.length; i++) {
    document.writeln(s.charAt(i) + '=' + s.charCodeAt(i));
}

Я обнаружил, что все умные кавычки появились как ? = 63.

Итак, в ОП определите, откуда берутся интеллектуальные кавычки, и убедитесь, что они - коды символов, которые вы ожидаете от них. Если это не так, подумайте об изменении кодировки источника, чтобы они пришли как “ = 8220, ” = 8221, ‘ = 8216 и ’ = 8217. Используйте мой цикл для проверки источника, если смарт-кавычки отображаются с любыми значениями charCodeAt(), отличными от перечисленных мной, replace() не будет работать так, как написано.

1
ответ дан Grant Wagner 27 August 2018 в 10:58
поделиться

Чтобы заменить все обычные кавычки на смарт-кавычки, я использую аналогичную функцию. Вы должны указать CharCode, так как некоторые настройки компьютеров / браузеров по умолчанию могут идентифицировать простые символы по-разному («", ",", ").

Использование CharCode с вызовом символа ASCII, который устранит

Чтобы заменить смарт-кавычки с ОДИНОЧНЫМИ ЦИТАТАМИ

function unSmartQuotify(n){
    var name = n;
    var apos = String.fromCharCode(39);
    while (n.indexOf("'") > -1)
        name = name.replace("'" , apos);
    return name;
} 

Для того, чтобы заменить смарт-кавычки на разные браузеры и операционные системы. Это также полезно для двуязычного использования (акценты и т. д.). найдите другие значения ASCII, которые могут вам понадобиться. Проверьте здесь .

1
ответ дан than10 27 August 2018 в 10:58
поделиться
Другие вопросы по тегам:

Похожие вопросы: