Divide un valor de matriz constante en un área de texto con un número seleccionado para obtener una nueva matriz numerada de forma individual.
Necesito una función de javascript que se pueda usar para dividir (con el número definido especificado) una matriz dentro de un área de texto después de hacer clic en el botón.
<textarea id="source">
const uint8_t ArrayName [] PROGMEM = { // 10 líneas
0xAA, 0xAA, 0xAA, 0xAA, 0xAA,
0xBB, 0xBB, 0xBB, 0xBB, 0xBB,
0xCC, 0xCC, 0xCC, 0xCC, 0xCC,
0xDD, 0xDD, 0xDD, 0xDD, 0xDD,
0xEE, 0xEE, 0xEE, 0xEE, 0xEE,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
0x00, 0x00, 0x00, 0x00, 0x00,
0x01, 0x01, 0x01, 0x01, 0x01,
0x22, 0x22, 0x22, 0x22, 0x22,
0x33, 0x33, 0x33, 0x33, 0x33,
};
</textarea>
En la siguiente área de texto (este ejemplo se divide en 3):
<textarea id="result">
const uint8_t ArrayName_0 [] PROGMEM = {
0xAA, 0xAA, 0xAA, 0xAA, 0xAA,
0xBB, 0xBB, 0xBB, 0xBB, 0xBB,
0xCC, 0xCC, 0xCC, 0xCC, 0xCC
};
const uint8_t ArrayName_1 [] PROGMEM = {
0xDD, 0xDD, 0xDD, 0xDD, 0xDD,
0xEE, 0xEE, 0xEE, 0xEE, 0xEE,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF
};
const uint8_t ArrayName_2 [] PROGMEM = {
0x00, 0x00, 0x00, 0x00, 0x00,
0x01, 0x01, 0x01, 0x01, 0x01,
0x22, 0x22, 0x22, 0x22, 0x22
};
const uint8_t ArrayName_3 [] PROGMEM = { // resto de la línea
0x33, 0x33, 0x33, 0x33, 0x33
};
</textarea>
Utilizo esta función que obtengo de aquí, pero el resultado es incorrecto. Estoy confundido acerca de agregar una copia de la primera línea al principio de cada matriz resultante.
function divide() {
var lines = $('#source').val().split(/\n/);
var texts = [];
for (var i = 0; i < lines.length; i++) {
if (/\S/.test(lines[i])) {
texts.push($.trim(lines[i]));
}
}
var list = texts;
var li = '';
for (var e = 0; e < list.length; e++) {
if (e % 3) {
var lit = li + list[e];
li = lit.substring(0, lit.length - 1);
li = li + '\n}\n';
} else {
li = li + list[e] + '\n';
}
}
li = lit.substring(0, lit.length - 1);
li = li + '\n}';
document.getElementById("result").value = li;
}
Gracias a todos por su ayuda en este documento de origen.
davy.ai
Para crear una función que puede dividir un arreglo dentro de un área de texto con un número definido especificado, puedes modificar la función existente de la siguiente manera:
En esta función, el área de texto de entrada se identifica con el atributo
id
source
, y el área de texto de resultado se identifica con el atributoid
result
.Para especificar el número deseado para dividir el arreglo, puedes agregar un elemento de entrada de tipo
number
con el atributoid
divideBy
.La función funciona obteniendo primero las líneas de texto del área de texto de entrada, eliminando las líneas vacías y eliminando los espacios en blanco de cada línea.
Luego, obtiene el valor del elemento de entrada
divideBy
y lo convierte a un número entero.A continuación, la función crea subarreglos del arreglo de entrada con el número deseado de elementos. Cualquier elemento restante se agrega a un nuevo subarreglo.
La función luego crea nuevos arreglos usando los subarreglos, siendo que cada arreglo se nombra como
ArrayName_x
, dondex
es el índice del subarreglo.Finalmente, la función establece el valor del área de texto de resultado con las cadenas generadas.
Ten en cuenta que esta función asume que el arreglo de entrada contiene la misma cantidad de elementos que se pueden dividir de manera uniforme por el número especificado. Si esto no es el caso, los subarreglos resultantes pueden contener elementos vacíos.