freeCodeCamp/curriculum/challenges/portuguese/08-coding-interview-prep/rosetta-code/tokenize-a-string-with-esca...

3.0 KiB

title id challengeType videoUrl localeTitle
Tokenize a string with escaping 594faaab4e2a8626833e9c3d 5 Tokenize uma string com escape

Description

Escreva uma função ou programa que pode dividir uma string em cada ocorrência não escapada de um caractere separador.

Deve aceitar três parâmetros de entrada:

A string O caractere separador O caractere de escape

Deve produzir uma lista de strings.

Regras para divisão:

Os campos que foram separados pelos separadores, tornam-se os elementos da lista de saída. Campos vazios devem ser preservados, mesmo no início e no final.

Regras para escapar:

"Escapeado" significa precedido por uma ocorrência do caractere de escape que ainda não escapou. Quando o caractere de escape precede um caractere que não tem significado especial, ele ainda conta como um escape (mas não faz nada de especial). Cada ocorrência do caractere de escape que foi usado para escapar de algo não deve se tornar parte da saída.

Demonstre que sua função satisfaz o seguinte caso de teste:

 um ^ | uno || tres ^^^^ | quatro ^^^ | ^ cuatro | 
e usando
 | 
como um separador e
 ^ 
como caractere de escape, sua função deve gerar o seguinte array:

 ['one | uno', ", 'three ^^', 'quatro ^ | quatro',"]
  

Instructions

Tests

tests:
  - text: <code>tokenize</code> é uma função.
    testString: 'assert(typeof tokenize === "function", "<code>tokenize</code> is a function.");'
  - text: <code>tokenize</code> deve retornar um array.
    testString: 'assert(typeof tokenize("a", "b", "c") === "object", "<code>tokenize</code> should return an array.");'
  - text: '<code>tokenize(&quot;one^|uno||three^^^^|four^^^|^cuatro|&quot;, &quot;|&quot;, &quot;^&quot;)</code> deve retornar [&quot;one | uno&quot;, &quot;&quot;, &quot;three ^^&quot; , &quot;quatro ^ | cuatro&quot;, &quot;&quot;] &quot;)'
    testString: 'assert.deepEqual(tokenize(testStr1, "|", "^"), res1, "<code>tokenize("one^|uno||three^^^^|four^^^|^cuatro|", "|", "^") </code> should return ["one|uno", "", "three^^", "four^|cuatro", ""]");'
  - text: '<code>tokenize(&quot;a@&amp;bcd&amp;ef&amp;&amp;@@hi&quot;, &quot;&amp;&quot;, &quot;@&quot;)</code> deve retornar <code>[&quot;a&amp;bcd&quot;, &quot;ef&quot;, &quot;&quot;, &quot;@hi&quot;]</code>'
    testString: 'assert.deepEqual(tokenize(testStr2, "&", "@"), res2, "<code>tokenize("a@&bcd&ef&&@@hi", "&", "@")</code> should return <code>["a&bcd", "ef", "", "@hi"]</code>");'

Challenge Seed

function tokenize(str, esc, sep) {
  return true;
}

After Test

console.info('after the test');

Solution

// solution required