A continuación se muestra un ejemplo de una cadena que quiero dividir en 3 partes de una subcadena
test01String001sEjemplos:
ejemplo_1 subCadena == "0"
res: [ "prueba","0","1String001s"] - prueba 0 1String001s
ejemplo_2 subCadena == "st"
res: [ "te"," st ","01String001s"] - prueba 01String001s
ejemplo_3 subCadena == "01s"
res: [ "test01String0","01s", "" ] - test01String0 01s
ejemplo_4 subCadena == "t"
resolución: [ "","t","est01String001s", ] - t est01String001s
Intento resolverlo a través de
var string='test01String001s' var keyword="01" console.log(string.split(keyword));producción:
["test","String0","s"] instead of [ "test","01","String001s"]o
var string='test01String001s' var keyword="0" console.log(string .split(keyword, 2));producción
["test","1String"]Para obtener 3 partes, no usaría split , pero usaría algo de lógica
const mystring = 'test01String001s' const sp = ['01','1','t','st', '1s'] sp.forEach(item=>{ let idx=mystring.indexOf(item) let result=[] if(idx===0){ result.push('') result.push(item) result.push(mystring.slice(item.length)) }else if (idx+item.length ==mystring.length){ result.push(mystring.slice(0,idx)) result.push(item) result.push('') }else if(idx!=-1){ result.push(mystring.slice(0,idx)) result.push(item) result.push(mystring.slice(idx+item.length)) } console.log(result) })Prueba esto.
var string = "test01String001s"; var splitKey = '01'; var components = string.split(splitKey); var array = ([components.shift(), components.join(splitKey)]); array.splice(1, 0, splitKey); console.log(array.join()); Salida: test,01,String001s
Esto debería funcionar:
const test = 'test01String001s'; const key = "t"; const re = new RegExp('(.*?)(' + key + ')(.*)'); const result = test.match(re, "regex"); result.shift(); console.log(result);Entonces, esta coincidencia de expresiones regulares está devolviendo una matriz de:
(.*?) - cualquier cosa antes de la tecla
(' + tecla + ') - tecla
(.*) - cualquier cosa después de la clave
Desafortunadamente, también devuelve la palabra coincidente completa, por lo que usé shift para eliminar la primera coincidencia de la matriz.