Tipos de datos en Arduino: La clase String

1
9842

Una de las clases que más utilizo cuando estoy programando en Arduino es la clase String. Los String o cadenas de caracteres son un tipo de datos que brindan una gran versatilidad en tiempo de ejecución. En este artículo voy a explicar las principales generalidades de esta clase y todo lo que podemos lograr con ella.

¿Qué es un String o cadena de caracteres?

Las cadenas de caracteres o string son tipos de datos que permiten almacenar caracteres. Se diferencian de los «char» porque permiten almacenar más de un solo caracter. Podemos guardar palabras, frases, números, caracteres especiales o la combinación de estos elementos. Veamos algunos ejemplos de declaraciones de Strings:

Como ven, estas declaraciones incluyen números, palabras, frases, caracteres especiales y combinaciones. La característica principal de los datos tipo String es que se expresan entre comillas.

Transformar de String a números

En Arduino se ha incluido algunos métodos para la transformación de datos tipo String a datos numéricos. Por ejemplo:

De esta forma es posible cambiar de un tipo de dato a otro. Por supuesto que este método no funcionará si se intenta transformar caracteres no numéricos.

Concatenación de caracteres

La concatenación consiste en unir dos cadenas de caracteres en una sola. Es muy útil para cuando se quieren construir secuencias de código. Veamos un ejemplo:

Si se imprime el valor de str3 será «hola mundo». Lo que se hizo fue crear una cadena con el valor «hola». Luego se crea una cadena con la variable «mundo». Después se crea una variable tipo String vacía. A esa variable se le agrega el valor de str1 (es decir, «hola») utilizando el operador de concatenación +=. Después se agrega un espacio vacío y por último se concatena la variable str2.

En lo personal utilizo mucho esta operación para construir cadenas de caracteres. Es especialmente útil cuando se trabaja con bases de datos y/o con clientes de http puesto que en ocasiones necesitamos «pasarle» parámetros a un método en específico y es necesario combinar valores con instrucciones de texto.

Descomposición en caracteres

Cuando se trabaja con datos tipo String es posible descomponer las cadenas de caracteres en una serie de caracteres simples. Para esto se utiliza comúnmente el ciclo «for» en conjunto con el método length() asociado a la clase String.

Cuando se utiliza el método length() obtenemos la cantidad de caracteres guardados dentro de una variable String. De esta forma, utilizamos el ciclo for y el método charAt() para «recorrer» la cadena de caracteres y obtener cada uno de los caracteres que forman la cadena.

Este pequeño fragmento de código produciría como salida:

El método charAt(int pos) se encarga de devolver los caracteres según su posición dentro del String. La posición 0 es el primer caracter de izquierda a derecha.

Creación de subcadenas

Las subcadenas son partes de una cadena de caracteres. Por ejemplo, si tenemos la cadena «hola mundo» y queremos extraer la palabra «hola», hacemos lo siguiente:

El valor que asumirá la variable subStr es «hola», puesto que fue extraída como un substring de la variable str comprendida entre los índices 0 y 4.

Reemplazos en cadenas

Los reemplazos permiten cambiar una parte de una cadena por otra. Por ejemplo, si tenemos la cadena «hola_mundo_para_todos_los_usuarios» y queremos cambiar los underscore (_) por espacios en blanco, hacemos lo siguiente:

De esta forma, el valor final de la variable str será «hola mundo para todos los usuarios».

Cambiar caracteres entre mayúscula y minúscula

Es posible remplazar todos los caracteres de una cadena por mayúsculas o minúsculas. Para ello existen los métodos toUpperCase() y toLowerCase(). Veamos un ejemplo:

De esta forma, el valor de str2 será «hola mundo» y el de la variable str3 será «HOLA MUNDO».

Localización de caracteres dentro de una cadena

La clase String cuenta con el método indexOf() que permite encontrar el índice en el cual se ubica cierto caracter. También es posible ubicar palabras. Veamos un ejemplo.

En este ejemplo, la variable i tendrá el valor de 0, puesto que «hola» se encuentra en el índice 0, si se considera el primer caracter de la cadena como la posición 0. La variable j tendrá el valor de 5, puesto que el espacio vacío se ubica en la quinta posición, contando de izquierda a derecha y considerando la «h» como la posición cero. La variable k tendrá el valor de -1, puesto que la palabra usuario no existe dentro de la cadena de caracteres en cuestión.

El método indexOf() también puede aceptar un segundo parámetro con el cual se puede especificar el indice inicial en el cual se desea empezar a buscar un caracter.

En este caso el valor de i será -1 puesto que se intenta buscar la cadena «hola» a partir del índice 2, lo cual devuelve un resultado nulo. La cadena «hola» debe buscarse desde el índice cero.

Conversión de bases numéricas

Con la clase String es posible convertir números de decimal a binario o a hexadecimal y vice versa. Veamos un ejemplo:

Los resultados impresos en el Monitor Serie serían:

19 sería el 25 en hexadecimal. 11001 es el resultado en binario y 31 en sistema octal.

Conclusiones

La clase String es, en definitiva, una herramienta muy útil para programar en Arduino. En lo personal trabajo mucho con Strings en mis códigos, aunque sin abusar de ellos. Cuando se declaran muchos Strings en los códigos en Arduino estamos ocupando una cantidad considerable de espacio de memoria, lo cual a veces puede causar que nuestro código ocupe demasiado espacio en la flash o en la SRAM y que nuestro programa tienda a fallar en tiempo de ejecución.

Esperamos que la información suministrada sea de utilidad para ustedes.

 

 

4 1 vote
Article Rating
Suscríbete
Notify of
guest

1 Comment
newest
oldest most voted
Inline Feedbacks
View all comments
guillermo
3 years ago

gracias profe