Tengo una cadena de letras y estoy tratando de cortarlas en una matriz usando split (), pero quiero que se divida para varias letras. Lo hice funcionar para una carta individual:

str = "YFFGRDFDRFFRGGGKBBAKBKBBK";
str.split(/(?<=\R)/); //-> Works for only 'R'
Result->[ 'YFFGR', 'DFDR', 'FFR', 'GGGKBBAKBKBBK' ]

Lo que quiero:

str = "YFFGRDFDRFFRGGGKBBAKBKBBK";
letters =['R', 'K', 'A'];
// split by any of the three letters (R,K,A)
Result->[ 'YFFGR', 'DFDR', 'FFR', 'GGGK', 'BBA', 'K', 'BK', 'BBK' ];
1
UofF 12 jul. 2021 a las 19:43

3 respuestas

La mejor respuesta

Puedes usar el grupo "clase de personaje": [RKA]

Todo lo que ponga dentro de estos corchetes son alternativas en lugar de un carácter.

str = "YFFGRDFDRFFRGGGKBBAKBKBBK";
var result = str.split(/(?<=[RKA])/);

console.log(result);
4
freedomn-m 12 jul. 2021 a las 16:46

Puedes pasar regex en split

"YFFGRDFDRFFRGGGKBBAKBKBBK".split(/[RKA]+/);
0
Boris Volkovich 12 jul. 2021 a las 16:50

Además de dividir, puede hacer coincidir los caracteres que no terminan con un solo signo de cualquier carácter.

const
    str = "YFFGRDFDRFFRGGGKBBAKBKBBK",
    result = str.match(/[^RKA]*./g);

console.log(result);
3
Nina Scholz 12 jul. 2021 a las 16:57