Удалить все пробелы перед двойными и после двойных кавычек

Я использовал приведенную ниже формулу, чтобы удалить все пустое пространство до «и после», но без усилий.

var test_string = '{" 1 ": "b.) some pasta salad", "   10": "   a.) Yes, some bread", "11  ": "   a.) eggs and toast  " }'
var test_string_format = test_string.replace(/^[ '"]+|[ '"]+$|( ){2,}/g,'$1')
    
console.info(test_string_format)

 

Как я могу использовать регулярное выражение для получения желаемого результата?

{"1":"b.) some pasta salad","10":"a.) Yes, some bread","11":"a.) eggs and toast" }

Предоставьте достаточно кода, чтобы другие могли лучше понять или воспроизвести проблему.

Community 18.02.2023 08:45
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
3
1
98
5
Перейти к ответу Данный вопрос помечен как решенный

Ответы 5

Замените ноль или более пробелов, за которыми следует кавычка, за которой следует ноль или более пробелов, только кавычкой:

replaceAll(/ *" */g, '"')

const test_string = '{" 1 ": "b.) some pasta salad", "   10": "   a.) Yes, some bread", "11  ": "   a.) eggs and toast  " }'

const trimmed = test_string.replaceAll(/ *" */g, '"');

console.info(trimmed);
replaceAll не будет работать во всех средах. Вместо этого используйте replace
Igor Micev 18.02.2023 09:43

    console.info('{" 1 ": "b.) some pasta salad", "   10": "   a.) Yes, some bread", "11  ": "   a.) eggs and toast  " }'
    .replaceAll(/( *\" +)|( +\ *)/ig,'"'))
replaceAll не будет работать во всех средах. Вместо этого используйте replace
Igor Micev 18.02.2023 09:41

Предполагая, что содержимое строки всегда допустимо в формате JSON, вы можете сделать это следующим образом:

var str = '{" 1 ": "b.) some pasta salad", "   10": "   a.) Yes, some bread", "11  ": "   a.) eggs and toast  " }'

const res=JSON.stringify(Object.fromEntries(Object.entries(JSON.parse(str)).map(e=>e.map(e=>e.trim()))))

console.info(res)

Я знаю, это какое-то «глупое» решение, но оно работает для данной строки образца.

Фрагмент кода анализирует строку JSON, а затем преобразует полученный объект в массив массивов. Затем каждый элемент каждого подмассива подвергается .trim()-обработке, и в конце операции объект реконструируется с помощью .Object.fromEntries() и снова превращается в строку JSON с помощью JSON.stringify().

const test_string = '{" 1 ": "b.) some pasta salad", "   10": "   a.) Yes, some bread", "11  ": "   a.) eggs and toast  " }';

const test_string_format = test_string.replace(/\s*"\s*/g, '"');

console.info(test_string_format);
  • \s: соответствует любому символу пробела
  • *: соответствует нулю или более предыдущему символу (\s)
  • ": соответствует символу двойной кавычки
Ответ принят как подходящий
const regex = /(\s*["]\s*)/gm;

var test_string =  = `{" 1 ": "b.) some pasta salad", "   10": "   a.) Yes, some bread", "11  ": "   a.) eggs and toast  " }
`;

console.info(test_string.replace(regex, '"'))

Это работает, но вам не нужны: 1) группа захвата, 2) класс персонажа вокруг ", 3) модификатор m.

Casimir et Hippolyte 18.02.2023 15:15

@CasimiretHippolyte Вы правы, модификатор m можно удалить. Насчет группировки и класса символов, я просто хотел сделать его более читабельным, но /\s*"\s*/g тоже работает.

EspressoCode 18.02.2023 20:26

Другие вопросы по теме

Swift: Как отрезать текст от более длинного текста, если инициатор и терминатор указаны как регулярное выражение?
Регулярное выражение: найти последнюю уникальную подстроку в конце строки
Регулярное выражение хотя бы для одного экземпляра каждого из списка букв?
Как мне извлечь все имена подобного типа в файл, используя python и регулярное выражение?
Как проанализировать строку User-Agent с помощью Powershell Match, чтобы получить браузер и ОС
Одно регулярное выражение с несколькими шаблонами соответствия
Чтение чего-либо между {{ и }} regex в JavaScript
Почему это регулярное выражение терпит неудачу, когда есть лишний ноль?
Почему оператор bash «=~» игнорирует последнюю часть указанного шаблона?
Разобрать отформатированную строку с метками, написанными ЗАГЛАВНЫМИ БУКВАМИ, за которыми следует их значение, для создания ассоциативного массива

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