Regex Удалить пробелы в строке JSON - PullRequest
1 голос
/ 05 марта 2020

У меня есть более широкая автоматизация, которая заполняет таблицу поиска и затем сериализует данные в файл JSON, поскольку это мой желаемый вывод.

Требуется удалить пробелы один раз в формате JSON заголовков столбцов поиска.

Я смотрю, возможно ли иметь регулярное выражение, которое идентифицирует заголовки и сможет удалить пробелы.

JSON Строка ниже:

     [
  {
"INVOLVED PARTY ID":" 9445999606",
"CUSTOMER NUMBER":" 9445999606",
"PRODUCT":"Current Account",
"LAST UPDATED":"20/02/2020 10:33:00",
"APPLICATION STATUS":"Clearing Handbrake",
"PROGRESS":"Progress",
"APPLICANT":" ACCEPT FLEX INDICATOR Y",
"QUESTION 3 - HEART/CANCER CONDITIONS":null,
  }
    ]

Желаемый вывод после манипуляций с регулярным выражением

     [
  {
"INVOLVEDPARTYID":" 9445999606",
"CUSTOMERNUMBER":" 9445999606",
"PRODUCT":"Current Account",
"LASTUPDATED":"20/02/2020 10:33:00",
"APPLICATIONSTATUS":"Clearing Handbrake",
"PROGRESS":"Progress",
"APPLICANT":" ACCEPT FLEX INDICATOR Y",
"QUESTION3-HEART/CANCERCONDITIONS":null,
 }
   ]

Обратите внимание, что были удалены только пробелы в заголовках.

Любая помощь в строке регулярных выражений будет очень признательна или покажет мне правильное направление.

Ответы [ 2 ]

1 голос
/ 05 марта 2020

Логика c заключается в том, чтобы сначала создать новый пустой результирующий объект, выполнить итерацию по ключам объекта prev, удалить из него пробел, затем присвоить его результирующему объекту в качестве ключа и поместить значение prev (без изменений) в качестве this (отфильтрованный ключ) значение;

const yourData =[
  {
"INVOLVED PARTY ID":" 9445999606",
"CUSTOMER NUMBER":" 9445999606",
"PRODUCT":"Current Account",
"LAST UPDATED":"20/02/2020 10:33:00",
"APPLICATION STATUS":"Clearing Handbrake",
"PROGRESS":"Progress",
"APPLICANT":" ACCEPT FLEX INDICATOR Y",
"QUESTION 3 - HEART/CANCER CONDITIONS":null,
  }
];

let newData = yourData.map(obj=>{
  let regexedObj = {};
  Object.keys(obj).forEach( prevKey => {
    //pattern can be /\s/ too, depends on use-case
    const regexedKey = prevKey.replace(/ /g,'')
    regexedObj[regexedKey] = obj[prevKey]
  })
  return regexedObj
})

console.log(newData)
0 голосов
/ 05 марта 2020

Хорошо, этот работает нормально:

(?<=\"[A-Z0-9 /-]*) (?=[A-Z0-9 /-]*\":)

Он имеет две группы без захвата:

  1. Ловит алфавиты (заглавные), цифры, пробел, дефис и sla sh, за которым следует двойная кавычка.
  2. Ловит все те же символы, что и перед двойной кавычкой, и двоеточие.

Между ними находится пробел, который будет захвачен.

Проверьте это https://regexr.com/4vogd

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...