Tengo una cadena (ecuación matemática):
Wt=mgt Esto es por lo que me gustaría dividirlos: ['wt', 'm', 'g', 't']
Me gustaría el resultado ['Wt', '=', 'm', 'g', t']
No estoy seguro de cómo hacer esto.
Esto debería ser aplicable a todas las ecuaciones ingresadas. Mi objetivo es que el usuario ingrese una ecuación y una matriz, y divida la cadena en otra matriz usando la matriz inicial que me dieron:
split('Wt=mg', ['Wt', 'm', 'g']) // => ['Wt', '=', 'm', 'g'] split('maa=tna', ['ma', 'a', 't', 'n']) // => ['ma', 'a', '=', 't', 'n', 'a'] split('Fnet=ma', ['Fnet', 'm', 'a']) // => ['Fnet', '=', 'm', 'a']No soy un maestro en RegEx , así que tal vez haya una forma más elegante de hacer esto, pero intente esto, parece funcionar bien con sus valores:
console.log(splitStr('Wt=mg', ['Wt', 'm', 'g'])) // => ['Wt', '=', 'm', 'g'] console.log(splitStr('maa=tna', ['ma', 'a', 't', 'n'])) // => ['ma', 'a', '=', 't', 'n', 'a'] console.log(splitStr('Fnet=ma', ['Fnet', 'm', 'a'])) // => ['Fnet', '=', 'm', 'a'] function splitStr(string, array){ const matches = `(${array.join("|")}|=)` return string.split(new RegExp(matches)).filter(f => f != '') } El truco aquí es crear una expresión regular con estructura (value1|valueN|=) con todos los valores en la matriz y luego dividirlos por estos valores.
Para el primer caso puedes usar algo como esto.
let str = "Wt=mgt" let strArr = str.split("=") let res = [strArr[0], ...strArr[1].split("")]; console.log(res)Para el segundo resultado, puede usar el método anterior y simplemente insertar el "=" en el medio.
let str = "Wt=mgt" let strArr = str.split("=") let res = [strArr[0],"=", ...strArr[1].split("")]; console.log(res)No estoy completamente seguro de cuál es su requisito aquí, pero puede hacer algo como esto:
List<String> final = new ArrayList<String>(); String toAdd = ""; for (int i = 0; i < s.length(); i++){ int c = (int) s.charAt(i); if((c > 32 && c < 47) || (c > 58 && c < 64) || (c > 91 && c < 96) || (c > 123 && c < 126)){ final.push(toAdd); final.push(s.charAt(i)); } else{ toAdd += s.charAt(i); } }