Блог
Замените двойные и одинарные кавычки в строке Javascript
#javascript #replace #special-characters
#javascript #заменить #специальные символы
Вопрос:
Я извлекаю некоторую информацию из базы данных, которая содержит измерения с помощью ‘ и » для обозначения футов и дюймов. Эти символы, находящиеся в моей строке, вызывают у меня проблемы позже, и мне нужно заменить все одинарные и двойные кавычки. Я могу успешно избавиться от одного или другого, выполнив:
this.Vals.replace(/'/g, "") To get rid of single quotes
this.Vals.replace(/"/g, "") To get rid of double quotes
Как мне избавиться от них обоих в одной строке. Я пытался просто делать
Но тогда ни один из них не будет заменен.
Комментарии:
1. Оба метода работают как шарм. Я отмечу ответ, как только он мне позволит. Спасибо!
Ответ №1:
Вы не экранируете кавычки в регулярных выражениях
Ответ №2:
mystring = mystring.replace(/["']/g, "");
Ответ №3:
Вам не нужно экранировать его внутри. Вы можете использовать | символ для разграничения поиска.
Проблема с заданием замена кавычек
Есть текст
One:*’Hi Mary.’ Two:*’Oh, hi.’
One:*’How are you doing?’
Two:*’I’m doing alright. How about you?’
One:*’Not too bad. The weather is great isn’t it?’
Two:*’Yes. It’s absolutely beautiful today.’
One:*’I wish it was like this more frequently.’
Two:*’Me too.’
One:*’So where are you going now?’
Two:*’I’m going to meet a friend of mine at the department store.’
One:*’Going to do a little shopping?’
Two:*’Yeah, I have to buy some presents for my parents.’
One:*’What’s the occasion?’
Two:*’It’s their anniversary.’
One:*’That’s great. Well, you better get going. You don’t want to be late.’
Two:*’I’ll see you next time.’
One:*’Sure. Bye.’
как заменить кавычки с одинарных на двойные. Помогите пожалуйста, напишите код. Кто добрый?))))
Замена кавычек в строке
Здравствуйте. вроде бы простая задача , но как решить. Есть строка(используется как имя.
Автоматическая замена кавычек по логике Word
Не знаю, насколько избита тема, но по данному вопросу ничего толком не нашел в инете. Предлагаю.
Замена двойных кавычек в ячейке Excel
Добрый день. Буду признателен за помощь. Проблема такая: обрабатываю excel файл, и необходимо.
Получение JSON от сервера, замена кавычек
Доброго времени суток. Пишу парсер и столкнулся с проблемой: Посылая запрос на сервер, получаю.
var newText = oldText.replace (/'/g, '"'); // а если регулярки ещё не проходили, то можно так: var newText = oldText.split ("'").join ('"');
Сообщение от Spyk
я не настолько добр сегодня
прежде чем просить «полный код», могли бы догадаться уточнить — полный код какого варианта вам нужен: с рег/выражениями или без них?
I ‘ m doing alright. How about you? — тоже нужно менять на » ??
Добавлено через 47 секунд
Да с регулярными
Сообщение от Spyk
ну тогда пробуйте применить один из вариантов выше- они оба рабочие
решение самой задачи вам дали- пробуйте вывести на экран
Добавлено через 5 минут
Spyk, дам подсказку:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
var oldText = " One:*'Hi Mary.' Two:*'Oh, hi.' One:*'How are you doing?' Two:*'I'm doing alright. How about you?' One:*'Not too bad. The weather is great isn't it?' Two:*'Yes. It's absolutely beautiful today.' One:*'I wish it was like this more frequently.' Two:*'Me too.' One:*'So where are you going now?' Two:*'I'm going to meet a friend of mine at the department store.' One:*'Going to do a little shopping?' Two:*'Yeah, I have to buy some presents for my parents.' One:*'What's the occasion?' Two:*'It's their anniversary.' One:*'That's great. Well, you better get going. You don't want to be late.' Two:*'I'll see you next time.' One:*'Sure. Bye.' ";
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
let oldText = " One:*'Hi Mary.' Two:*'Oh, hi.' One:*'How are you doing?' Two:*'I'm doing alright. How about you?' One:*'Not too bad. The weather is great isn't it?' Two:*'Yes. It's absolutely beautiful today.' One:*'I wish it was like this more frequently.' Two:*'Me too.' One:*'So where are you going now?' Two:*'I'm going to meet a friend of mine at the department store.' One:*'Going to do a little shopping?' Two:*'Yeah, I have to buy some presents for my parents.' One:*'What's the occasion?' Two:*'It's their anniversary.' One:*'That's great. Well, you better get going. You don't want to be late.' Two:*'I'll see you next time.' One:*'Sure. Bye.' "; let newText = oldText.replace (/'/g, '"'); console.log(oldtext.replace(/'/g, '"'));
Spyk,
Вы объявляете переменную oldText а выводите old t ext
Ну и вместо » поставьте `
Добавлено через 48 секунд
Сообщение от Mr_Sergo
Регистр в JS играет очень важную роль, это 2 разные переменные
Добавлено через 2 минуты
Вообщем так:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
let oldText = ` One:*'Hi Mary.' Two:*'Oh, hi.' One:*'How are you doing?' Two:*'I'm doing alright. How about you?' One:*'Not too bad. The weather is great isn't it?' Two:*'Yes. It's absolutely beautiful today.' One:*'I wish it was like this more frequently.' Two:*'Me too.' One:*'So where are you going now?' Two:*'I'm going to meet a friend of mine at the department store.' One:*'Going to do a little shopping?' Two:*'Yeah, I have to buy some presents for my parents.' One:*'What's the occasion?' Two:*'It's their anniversary.' One:*'That's great. Well, you better get going. You don't want to be late.' Two:*'I'll see you next time.' One:*'Sure. Bye.' `; let newText = oldText.replace (/'/g, '"'); console.log(oldText.replace(/'/g, '"'));
Вот такой вопрос ещё а как можно оставить одинарные и двойные кавычки допустим
I»m doing alright
оставить вот так
I’m doing alright
как это сделать? мне вот интересно стало.
Сообщение от Spyk
нужно в шаблоне регулярки провести лексический разбор текста:
одинарные кавычки, окаймлённые буквами (т. е. находящиеся в границах слова \b ), не трогать, а прочие (в т. ч. те, после которых имеется символ переноса строки \n и те, перед которыми есть символ звёздочки * ) — заменить двойными
подождите «добрых дядь», захотят помочь — сделают
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
let oldText = "One:*'Hi Mary.' Two:*'Oh, hi.'\n" + "One:*'How are you doing?'\n" + "Two:*'I`m doing alright. How about you?'\n" + "One:*'Not too bad. The weather is great isn`t it?'\n" + "Two:*'Yes. It`s absolutely beautiful today.'\n" + "One:*'I wish it was like this more frequently.'\n" + "Two:*'Me too.'\n" + "One:*'So where are you going now?'\n" + "Two:*'I`m going to meet a friend of mine at the department store.'\n" + "One:*'Going to do a little shopping?'\n" + "Two:*'Yeah, I have to buy some presents for my parents.'\n" + "One:*'What`s the occasion?'\n" + "Two:*'It`s their anniversary.'\n" + "One:*'That`s great. Well, you better get going. You don`t want to be late.'\n" + "Two:*'I`ll see you next time.'\n" + "One:*'Sure. Bye\n.'" ; let newText = oldText.replace (/'/g, '"'); console.log(oldText.replace(/'/g, '"'));
Но не знаю насколько вам подойдет такой вариант- по условиям то скорее всего нельзя так делать, подковырка-то вся в этом.
Сообщение от Mr_Sergo
тоже так считаю, ибо текст — на аглицком, что предполагает прямое использование \b и \w (что не «проканает» для кириллицы)
Кстати, пардон, моя невнимательность, привел код в котором непонятно зачем метод replace() используется два раза. Привожу исправленный код:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
let oldText = "One:*'Hi Mary.' Two:*'Oh, hi.'\n" + "One:*'How are you doing?'\n" + "Two:*'I`m doing alright. How about you?'\n" + "One:*'Not too bad. The weather is great isn`t it?'\n" + "Two:*'Yes. It`s absolutely beautiful today.'\n" + "One:*'I wish it was like this more frequently.'\n" + "Two:*'Me too.'\n" + "One:*'So where are you going now?'\n" + "Two:*'I`m going to meet a friend of mine at the department store.'\n" + "One:*'Going to do a little shopping?'\n" + "Two:*'Yeah, I have to buy some presents for my parents.'\n" + "One:*'What`s the occasion?'\n" + "Two:*'It`s their anniversary.'\n" + "One:*'That`s great. Well, you better get going. You don`t want to be late.'\n" + "Two:*'I`ll see you next time.'\n" + "One:*'Sure. Bye.'" ; let newText = oldText.replace (/'/g, '"'); console.log(newText);
Сообщение от Spyk
\n — для новой строки при выводе в консоль, можете их поудалять, но тогда весть текст будет одной строкой в консоли.
Добавлено через 2 минуты
Spyk, самое верное решение было подмечено выше kalabuni но я не очень силен в регулярках
Не понятно. даже читаю в справочнике не понимаю
Добавлено через 22 минуты
kalabuni, не понимаю как это сделать.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
let oldText = ` One:*'Hi Mary.' Two:*'Oh, hi.' One:*'How are you doing?' Two:*'I'm doing alright. How about you?' One:*'Not too bad. The weather is great isn't it?' Two:*'Yes. It's absolutely beautiful today.' One:*'I wish it was like this more frequently.' Two:*'Me too.' One:*'So where are you going now?' Two:*'I'm going to meet a friend of mine at the department store.' One:*'Going to do a little shopping?' Two:*'Yeah, I have to buy some presents for my parents.' One:*'What's the occasion?' Two:*'It's their anniversary.' One:*'That's great. Well, you better get going. You don't want to be late.' Two:*'I'll see you next time.' One:*'Sure. Bye.' `; let newText = oldText.replace (/([^\w]+)'[\.]?/g, '$1"'); console.log(newText);
Кстати, One:*’Hi Mary.’ Two:*’Oh, hi.’ выбивается из общей логики
Добавлено через 5 минут
Даже [\.]? тут ни к чему
Добавлено через 6 минут
Вот решение, для случаев когда мы забыли знак препинания в конце, например:
вместо One:*’I wish it was like this more frequently.’
у нас One:*’I wish it was like this more frequently’
let newText = oldText.replace (/([^\w]+)'|'(\n)/g, '$1"$2');
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
let oldText = ` One:*'Hi Mary.' Two:*'Oh, hi.' One:*'How are you doing?' Two:*'I'm doing alright. How about you?' One:*'Not too bad. The weather is great isn't it?' Two:*'Yes. It's absolutely beautiful today.' One:*'I wish it was like this more frequently' Two:*'Me too.' One:*'So where are you going now?' Two:*'I'm going to meet a friend of mine at the department store.' One:*'Going to do a little shopping?' Two:*'Yeah, I have to buy some presents for my parents.' One:*'What's the occasion?' Two:*'It's their anniversary.' One:*'That's great. Well, you better get going. You don't want to be late.' Two:*'I'll see you next time.' One:*'Sure. Bye.' `; let newText = oldText.replace (/([^\w]+)'|'(\n)/g, '$1"$2'); console.log(newText);
Замена кавычек в Javascript?
Для веб-приложения, которое я создаю, я буду получать входящие текстовые строки, иногда содержащие кавычки. Так как я собираюсь писать документом, строку нужно изменить либо на апострофы, либо на экранирование. Как бы я это сделал, потому что, когда я пытаюсь это сделать, это, похоже, не работает, особенно я думаю, потому что кавычки строки останавливают работу остальной части скрипта.
Надеюсь, в этом есть какой-то смысл, я новичок в этом, поэтому он может и не иметь смысла. Я постараюсь уточнить, если это будет необходимо. Спасибо!
4 ответа
Экранирование их для HTML:
var escapedString = string.replace(/'/g, "'").replace(/"/g, """);
Экранирование их для кода JS:
var escapedString = string.replace(/(['"])/g, "\\$1");
Если вы генерируете строки Javascript на сервере, вам нужно будет экранировать кавычки и некоторые другие символы.
\' Single quotation mark \" Double quotation mark \\ Backslash \b Backspace \f Form feed \n New line \r Carriage return \t Horizontal tab \ddd Octal sequence (3 digits: ddd) \xdd Hexadecimal sequence (2 digits: dd) \udddd Unicode sequence (4 hex digits: dddd)
Попробуйте следующий код в некотором HTML:
Если это просто JS, вы можете использовать:
Это удаляет нежелательные кавычки на отправленные пользователем значения.
Вам нужно убежать от них так:
Таким образом, если исходная строка имеет одинарные кавычки, замените каждую одинарную кавычку косой чертой и одинарной кавычкой.