Cadena dividida en Arduino

Ammar Ali 12 octubre 2023
Cadena dividida en Arduino

Este tutorial discutirá cómo dividir una cadena usando la función subcadena () en Arduino.

Use la función substring() para dividir una cadena en Arduino

Arduino proporciona una función integrada substring() para dividir una cadena determinada. Podemos dividir una cadena usando el valor de índice inicial y final.

La función substring() tiene dos argumentos. El primer argumento es el valor de índice inicial a partir del cual queremos iniciar el proceso de división, y el segundo es el valor de índice final donde se detendrá el proceso de división.

Sintaxis:

Sub_string = MyString.substring(from, to);

La variable Sub_cadena contendrá la salida de la función subcadena(), y la variable MiCadena contendrá la cadena original que queremos dividir. La variable from contiene el índice inicial y la variable to contiene el índice final.

Definamos una cadena y dividámosla usando la función substring() e imprimámosla en el monitor serie de Arduino.

Ejemplo:

String My_S = "hello world";

void setup() { Serial.begin(9600); }
void loop() {
  String sub_S = My_S.substring(0, 5);
  Serial.println(sub_S);
  delay(1000);
}

Producción :

hello

En el código anterior, la función Serial.println() imprime el resultado en el monitor serie de Arduino. La división de cadenas comenzará desde 0, incluirá el carácter de índice 0 y terminará en el índice 5, excluyendo el carácter en el índice 5.

También podemos encontrar el índice de caracteres usando la función indexOf() de Arduino. El índice de función acepta dos argumentos.

El primer argumento es obligatorio y representa el carácter o cadena cuyo índice queremos encontrar. El segundo argumento es opcional y representa el índice inicial para encontrar el índice del carácter.

Por defecto, la función indexOf() comienza a buscar la cadena desde el principio para encontrar el índice del carácter dado, pero también podemos pasar un índice como punto de partida usando el segundo argumento de la función indexOf().

Sintaxis:

int index = MyString.indexOf(val, from);

La variable index almacenará el índice de la variable val, que contiene un carácter o cadena en el código anterior. La variable desde define el índice de inicio utilizado como punto de partida para encontrar el índice del carácter dado.

Usamos la función indexOf() cuando no conocemos el índice de caracteres para pasar substring().

Por ejemplo, si queremos dividir la cadena dada usando el carácter de espacio como índice final, podemos usar la función indexOf() para encontrar el índice del carácter de espacio y luego usarlo dentro de la función substring() para dividir la cuerda.

La función indexOf() devolverá -1 si el índice no se encuentra en la cadena dada.

Ejemplo:

String My_S = "hello world";

void setup() { Serial.begin(9600); }
void loop() {
  int index = My_S.indexOf(' ');
  String sub_S = My_S.substring(0, index);
  Serial.println(index);
  Serial.println(sub_S);
  delay(1000);
}

Producción :

5
hello

En el código anterior, la variable index contiene el índice del carácter de espacio presente en la cadena dada. Como puede ver, mostramos el índice y el resultado de la división de cadenas en la ventana del monitor en serie.

También podemos dividir una cadena en función del número de líneas.

Por ejemplo, si una cadena contiene varias líneas de texto y queremos dividir y obtener cada línea como una cadena separada.

Podemos usar la función indexOf('\n') para encontrar el índice de una nueva línea y dividir la cadena dada en consecuencia.

La función indexOf() comienza a buscar el índice desde el comienzo de la cadena dada. Sin embargo, también podemos utilizar la función lastIndexOf(), que busca el índice a partir del final de una cadena.

Como segundo argumento, también podemos pasar el índice inicial dentro de la función lastIndexOf(). Por ejemplo, dividamos una cadena que contiene tres líneas, obtengamos la última línea y la mostremos en la ventana del monitor serie.

Ejemplo:

String My_S = "hello world\nGreetings\nPeople";

void setup() {
  Serial.begin(9600);
  Serial.println(My_S);
}
void loop() {
  int index = My_S.lastIndexOf('\n');
  int length = My_S.length();
  String sub_S = My_S.substring(index, length);
  Serial.println(sub_S);
  delay(100000);
}

Producción :

hello world
Greetings
People

People

Usamos la función lastIndexOf() en el código anterior porque solo queremos obtener la última línea de texto presente en la cadena dada. Las primeras tres líneas son la cadena dada en la salida, y la cuarta línea resulta de la división de cadenas.

Usamos la función length() para obtener la longitud de la cadena dada que se usará como el valor de índice final dentro de substring(). Usamos la función delay() para agregar algo de retraso en la ejecución del código porque el bucle repetirá el proceso.

Si solo queremos hacer el desdoblamiento, podemos escribir el código dentro de la función setup(), que solo se ejecuta una vez.

Podemos dividir una cadena en función de cualquier carácter. Solo tenemos que encontrar su índice usando la función indexOf().

Podemos dividir la cadena usando la función substring(). Supongamos que queremos obtener todas las líneas por separado en una cadena dada. Tenemos que obtener una línea, guardar la cadena restante en una variable y realizar la misma operación nuevamente usando un bucle hasta que se hayan extraído todas las líneas.

Autor: Ammar Ali
Ammar Ali avatar Ammar Ali avatar

Hello! I am Ammar Ali, a programmer here to learn from experience, people, and docs, and create interesting and useful programming content. I mostly create content about Python, Matlab, and Microcontrollers like Arduino and PIC.

LinkedIn Facebook

Artículo relacionado - Arduino String