--- title: Tokenize a string with escaping id: 594faaab4e2a8626833e9c3d challengeType: 5 videoUrl: '' localeTitle: 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
```yml tests: - text: tokenize é uma função. testString: 'assert(typeof tokenize === "function", "tokenize is a function.");' - text: tokenize deve retornar um array. testString: 'assert(typeof tokenize("a", "b", "c") === "object", "tokenize should return an array.");' - text: 'tokenize("one^|uno||three^^^^|four^^^|^cuatro|", "|", "^") deve retornar ["one | uno", "", "three ^^" , "quatro ^ | cuatro", ""] ")' testString: 'assert.deepEqual(tokenize(testStr1, "|", "^"), res1, "tokenize("one^|uno||three^^^^|four^^^|^cuatro|", "|", "^") should return ["one|uno", "", "three^^", "four^|cuatro", ""]");' - text: 'tokenize("a@&bcd&ef&&@@hi", "&", "@") deve retornar ["a&bcd", "ef", "", "@hi"]' testString: 'assert.deepEqual(tokenize(testStr2, "&", "@"), res2, "tokenize("a@&bcd&ef&&@@hi", "&", "@") should return ["a&bcd", "ef", "", "@hi"]");' ```
## Challenge Seed
```js function tokenize(str, esc, sep) { return true; } ```
### After Test
```js console.info('after the test'); ```
## Solution
```js // solution required ```