Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

288
Visualizações
Newbie question: my function variables aren't changing

I have a function for verifying and possibly modifying postal codes from a test file. It verifies correct string length, that there's a space in the middle of the 6 characters (& if not, to insert one), etc. My regExp test is working, but I'm having trouble inserting a space in the middle of a string.

function fixPostalCode(postalCode) {
    var invalidChars =/^[ABCEGHJ-NPRSTVXY]\d[ABCEGHJ-NPRSTV-Z] ?\d[ABCEGHJ-NPRSTV-Z]\d$/i;
    postalCode = postalCode.toString().trim();
   
    if (postalCode.length = 6 && invalidChars.test(postalCode.toString())) {
        return postalCode.toUpperCase();
    }

    if (postalCode.length = 5 && postalCode.charAt(3) !== ' ' && invalidChars.test(postalCode.toString())) {
        return postalCode.slice(0, 3) + " " + postalCode.slice(3, 6);

    } else {
        throw 'Invalid postal code';
    }
}

The test I'm having trouble with is this:

  test('an internal space is added', function () {
    const postalCode = 'A1A1A1';
    expect(fixPostalCode(postalCode)).toEqual('A1A 1A1');
  });

my slice method isn't doing anything to the string.

about 4 years ago · Juan Pablo Isaza
2 Respostas
Responde à pergunta

0

trim() removes whitespace from both sides of a string not from the middle of string. As I see from your description you are trying to cancel whitespace in the middle of the string which is not possible with trim. You should use replace

function fixPostalCode(postalCode) {
    let test1 = postalCode.toString().trim();
    console.log(test1) ///It will fail
    let test2 = postalCode.replace(/ +/g, "");
    console.log(test2) ///It will be succesfull
}

fixPostalCode('A1A 1A1');

about 4 years ago · Juan Pablo Isaza Relatório

0

You're most of the way there, but the order of your space insertion wasn't being picked up by the later Regex as valid. Without changing the regex, your code is functional by swapping the order of your toUpperCase method with the space insertion via slice:

function fixPostalCode(postalCode) {
  var invalidChars = new RegExp(/([ABCEGHJKLMNPRSTVXY]\d)([ABCEGHJKLMNPRSTVWXYZ]\d){2}/i);
  postalCode = postalCode.toString().trim();

  if (invalidChars.test(postalCode.toString())) {
    postalCode = postalCode.toUpperCase();
  }

  if (postalCode.charAt(3) !== ' ') {
    return postalCode.slice(0, 3) + ' ' + postalCode.slice(3, 6);
  } else {
    throw 'Invalid postal code';
  }
}

about 4 years ago · Juan Pablo Isaza Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda