Нужно сделать регулярными выражениями. Как написать шаблон для замены кавычек c " на ' - только тех которые находятся внутри слов?
var text = 'Эту "задачу" "нужн"о сделать" регулярным"и выраже"ниями';
var pattern = '/???/';
var result = text.replace(pattern, "'");
console.log(result);
Так как кавычка внутри слова, слева и справа от нее должны быть буквы.
Поэтому для русского языка регулярка может иметь вид /([а-яё])"([а-яё])/g
.
Шаблон замены: "$1'$2" → взять первую и вторую группы (буквы между которыми была кавычка) и поставить между ними одинарную кавычку:
var text = 'Эту "задачу" "нужн"о сделать" регулярным"и выраже"ниями';
var pattern = /([а-яё])"([а-яё])/g;
var result = text.replace(pattern, "$1'$2");
console.log(result);
Решение, которое будет работать во всех браузерах, не должно содержать блока предварительного просмотра назад. Кроме того, чтобы заменить кавычки, которые следуют друг за другом через одну букву, без блока предварительного просмотра вперёд не обойтись.
Поэтому лучшее решение будет
var text = 'Эту "задачу" "ну"ж"н"о сделать" регулярным"и выраже"ниями';
var pattern = /([а-яё])"(?=[а-яё])/ig;
var result = text.replace(pattern, "$1'");
console.log(result);
См. демо регулярного выражения.
Подробности
([а-яё])
- Захватывающая группа №1 (ссылка на значение этой группы из шаблона замены осуществляется с помощью $1
): буква русского алфавита"
- двойная кавычка(?=[а-яё])
- блок предварительного просмотра вперёд, который проверяет следующее условие: сразу после знака "
должна стоять буква русского алфавитаig
- модификаторы
i
- регистронезависимость включенаg
- поиск всех вхождений включенДля браузеров и сред, поддерживающих стандарт ECMAScript 2018, можно использовать следующее решение для любого языка:
var pattern = /(?<=\p{L})"(?=\p{L})/gu;
var result = 'Эту "задачу" "ну"ж"н"о сделать" регулярным"и выраже"ниями'.replace(pattern, "'");
console.log(result);
\p{L}
находит любую букву.
var text = 'Эту "задачу" "нужн"о сделать" регулярным"и выраже"ниями';
var result = text.replace(/(?<=\S)\"(?=\S)/g, "\'");
console.log(result);
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Перевод документов на английский язык: Важность и ключевые аспекты
Использую Leaflet плагин extra-markers Если добавить marker с описанием icon:
Помогите переделать этот код с использованием классов и конструкторов для инициализации объектов классов
друзьяНедавно начал изучать Ноду, в качестве обучающего задания придумал написать асинхронный многопоточный парсер с ограничением кол-ва...
Начинаю изучать vue, возник вопрос, как данные из input введенные пользователем записать в массив namesThatRhyme, в виде value:введенные данные , тк сейчас...