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

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

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
Руководство для начинающих по веб-разработке на React.js
Руководство для начинающих по веб-разработке на React.js
Веб-разработка - это захватывающая и постоянно меняющаяся область, которая постоянно развивается благодаря новым технологиям и тенденциям. Одним из...
Калькулятор CGPA 12 для семестра
Калькулятор CGPA 12 для семестра
Чтобы запустить этот код и рассчитать CGPA, необходимо сохранить код как HTML-файл, а затем открыть его в веб-браузере. Для этого выполните следующие...
Как собрать/развернуть часть вашего приложения Angular
Как собрать/развернуть часть вашего приложения Angular
Вам когда-нибудь требовалось собрать/развернуть только часть вашего приложения Angular или, возможно, скрыть некоторые маршруты в определенных средах?
Оптимизация React Context шаг за шагом в 4 примерах
Оптимизация React Context шаг за шагом в 4 примерах
При использовании компонентов React в сочетании с Context вы можете оптимизировать рендеринг, обернув ваш компонент React в React.memo сразу после...
Интервьюер: Почему '[] instanceof Object' возвращает "true"?
Интервьюер: Почему '[] instanceof Object' возвращает "true"?
Все мы знаем, что [] instanceof Array возвращает true, но почему [] instanceof Object тоже возвращает true?
Абстрактное синтаксическое дерево (AST) и как оно работает с ReactJS
Абстрактное синтаксическое дерево (AST) и как оно работает с ReactJS
Абстрактное синтаксическое дерево (AST) - это древовидная структура данных, которая представляет структуру и иерархию исходного кода на языке...
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 «=~» игнорирует последнюю часть указанного шаблона?
Разобрать отформатированную строку с метками, написанными ЗАГЛАВНЫМИ БУКВАМИ, за которыми следует их значение, для создания ассоциативного массива.

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