Правильное использование прямых двойных "и одинарных" кавычек не относится к правильно пунктуированному тексту - они фактически используются в коде. Вьющиеся двойные & ldquo; & rdquo; и одиночные & lsquo; & rsquo; цитаты (иначе умные кавычки) ) следует использовать вместо . Если исходить из контекста, предоставленного примером в OP, необходимость хранить апостроф означает, что текст является содержимым, а не кодом:
Как это: "бле", "бла" нет "
собирается быть: "" ble "" бла "не"
без конфликта?
Двойные кавычки внутри должны быть экранированы или внешние кавычки заменены обратными кавычками, если строка находится внутри кода. Если это просто континент, то, вероятно, он грамматически некорректен (не знаю наверняка)?
Следующая демонстрация заменит прямые двойные и одинарные кавычки своими вьющимися / умными аналогами. Он заменяет прямую одинарную кавычку на фигурную / умную правильную одинарную кавычку & rsquo; когда его не предшествует пробел, ^
, |
, [
, -
, -, /, (
, \
, [
, {
, "
или ]
, который является предикатом для заключительной цитаты или апострофом .
Вы можете удалить ненужные заявления.
let str = document.querySelector('main').innerHTML;
document.querySelector('output').innerHTML = smarten(str);
function smarten(str) {
// Opening single quote
str = str.replace(/(^|[-—/(\[{"\s])'/g, "$1\u2018");
// Closing single quote and apostrophe
str = str.replace(/'/g, "\u2019");
// Opening double quote
str = str.replace(/(^|[-—/(\[{‘\s])"/g, "$1\u201c");
// Closing double quote
str = str.replace(/"/g, "\u201d");
return str;
}
<main>
<p>From Sun Tzu's <i>The Art of War</i>, "If you know both yourself and your enemy, you can win numerous (literally, 'a hundred') battles without jeopardy."</p>
</main>
<output></output>