Уберите запятую и пробел из строки - PullRequest
3 голосов
/ 20 февраля 2020

Я работаю с поиском по почтовому индексу, и некоторые элементы адреса, например, округ, время от времени возвращаются пустыми как ","

Я собираюсь убрать их из строка для возврата в более читаемый формат адреса

Пример данных: JSON:

{
"latitude": 53.381130218505859,
"longitude": -1.4663739204406738,
"addresses": [
    "Crucible Enterprises Ltd, 55 Norfolk Street, , , , Sheffield, South Yorkshire",
    "Crucible Theatre, 55 Norfolk Street, , , , Sheffield, South Yorkshire",
    "Sheffield Crucible Productions Ltd, 55 Norfolk Street, , , , Sheffield, South Yorkshire",
    "Sheffield Theatres Crucible Trust, 55 Norfolk Street, , , , Sheffield, South Yorkshire",
    "The City Of Sheffield Theatre Trust, 55 Norfolk Street, , , , Sheffield, South Yorkshire"
]
}

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

Как мне go сделать это? Мой текущий код:

$.ajax(
            {
                type: 'POST',
                url: '/address',
                dataType: 'json',
                data: { _token: token, postcode: postcode},
                success: function( data )
                {
                    $('.addresses').html('');

                    $.each(data, function(k, v)
                    {
                        address = v.replace(/\s+/g, ' ');

                        $('.addresses').append('<option value="">'+ address +'</option>');
                    })
                }
            }
        )

Ответы [ 3 ]

2 голосов
/ 20 февраля 2020

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

var str = "Crucible Enterprises Ltd, 55 Norfolk Street, , , , Sheffield, South Yorkshire"
var cleaned = str.replace(/,(\s,)+/, ',')
console.log(cleaned)
2 голосов
/ 20 февраля 2020

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

const address = "The City Of Sheffield Theatre Trust, 55 Norfolk Street, , , , Sheffield, South Yorkshire"

const cleanAddress = address.split(", ")
    .filter(section => !!section)
    .join(", ");

// The City Of Sheffield Theatre Trust, 55 Norfolk Street, Sheffield, South Yorkshire

При этом используется тот факт, что пустая строка "" является ложным значением.

Добавление этого к вашему коду:

$.ajax({
  type: "POST",
  url: "/address",
  dataType: "json",
  data: { _token: token, postcode: postcode },
  success: function(data) {
    $(".addresses").html("");

    $.each(data, function(k, v) {
     address = v.split(", ")
         .filter(section => !!section)
         .join(", ");

      $(".addresses").append('<option value="">' + address + "</option>");
    });
  }
});
1 голос
/ 20 февраля 2020

Вы можете заменить дополнительные ,, используя regex.

Попробуйте это.

let str = "Crucible Enterprises Ltd, 55 Norfolk Street, , , , Sheffield, South Yorkshire";
let regex = /(,\s){2,}/g
console.log(str.replace(regex, ", "));

В своем коде вы можете использовать, как показано ниже.

$.ajax({
  type: "POST",
  url: "/address",
  dataType: "json",
  data: { _token: token, postcode: postcode },
  success: function(data) {
    $(".addresses").html("");

    $.each(data, function(k, v) {
      address = v.replace(/\s+|(,\s){2,}/g, " ");

      $(".addresses").append('<option value="">' + address + "</option>");
    });
  }
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...