--- title: Tokenize a string with escaping id: 594faaab4e2a8626833e9c3d challengeType: 5 videoUrl: '' localeTitle: Tokenize una cadena con escape --- ## Description

Escriba una función o programa que pueda dividir una cadena en cada aparición sin escape de un carácter separador.

Debe aceptar tres parámetros de entrada:

La cadena El carácter separador El carácter de escape

Debe salir una lista de cadenas.

Reglas para dividir:

Los campos que estaban separados por los separadores, se convierten en los elementos de la lista de salida. Los campos vacíos deben conservarse, incluso al principio y al final.

Reglas para escapar:

"Escapado" significa precedido por una aparición del carácter de escape que aún no se ha escapado. Cuando el personaje de escape precede a un personaje que no tiene un significado especial, todavía cuenta como un escape (pero no hace nada especial). Cada aparición del carácter de escape que se utilizó para escapar de algo, no debe formar parte de la salida.

Demuestre que su función satisface el siguiente caso de prueba: Cadena dada

 uno ^ | uno || tres ^^^^ | cuatro ^^^ | ^ cuatro | 
y usando
 | 
como separador y
 ^ 
como carácter de escape, su función debería generar la siguiente matriz:

 ['one | uno', ", 'three ^^', 'four ^ | quatro',"]
  
## Instructions
## Tests
```yml tests: - text: tokenize es una función. testString: 'assert(typeof tokenize === "function", "tokenize is a function.");' - text: tokenize debería devolver una matriz. testString: 'assert(typeof tokenize("a", "b", "c") === "object", "tokenize should return an array.");' - text: 'tokenize("one^|uno||three^^^^|four^^^|^cuatro|", "|", "^") debe devolver ["one | uno", "", "three ^^" , "cuatro ^ | 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", "&", "@") debe devolver ["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 ```