Hola a todos!
La semana pasada, aunque tenía una publicación preparada, al final no pude sacar el post.
El tema del post de hoy es cómo aplicar a una cadena de texto: mayúsculas, minúsculas y nombre propio en Typescript. Para hacer el ejemplo he construido una UDF con una salida matricial para mostrar el resultado de las tres funciones a la vez.
Veamos el ejemplo:

Convertiremos este contenido en mayúsculas, nombre propio y minúsculas. Obviamente en minúsculas quedará igual.
El código que vamos a aplicar es el siguiente:
/**
* @customfunction
* @returns {number[][] }
*/
function convertirCadena(miCadena: string) {
//Convertimos la variable nomPropio
var nomProp = miCadena.toLowerCase().split(' ');
for (var i = 0; i < nomProp.length; i++) {
nomProp[i] = nomProp[i].charAt(0).toUpperCase() + nomProp[i].substring(1);
}
//creamos títulos de columna
var titulos = ['PASAR A MAYÚSCULAS', 'PASAR A NOMBRE PROPIO', 'PASAR A MINÚSCULAS']
// aplicamos todas las funciones
var frase = [miCadena.toUpperCase(), nomProp.join(' '), miCadena.toLowerCase()]
//pasamos los datos a la función
return [titulos, frase]
}
En el caso de las funciones Mayúsculas y Minúsculas existe una función en typescript, es .toUpperCase() y .toLowerCase() respectivamente. Pero ¿Qué ocurre con NomPropio?, pues que no tenemos función nativa y por lo tengo tenemos que componerla. Existen muchas formas y métodos para hacerlo, pero a mí particularmente me gusta la idea de hacerlo mediante un loop que recorra la cadena e identifique la primera letra de cada letra y la convierta en mayúscula:
var nomProp = miCadena.toLowerCase().split(' ');
for (var i = 0; i < nomProp.length; i++) {
nomProp[i] = nomProp[i].charAt(0).toUpperCase() + nomProp[i].substring(1);
}
La salida de este loop la uniremos con la función .join(' ')
para obtener el resultado completo.
Finalmente, retornamos resultado compuesto por tres títulos de columna y el resultado de cada uno debajo.

El resultado es el esperado. Además la función nomProp se podría modificar según nuestras necesidades. Otra forma de conseguir el mismo resultado pero con una función de flecha sería así:
var nomProp = miCadena.split(' ')
.map(nomProp => nomProp[0].toUpperCase() + nomProp.substring(1).toLowerCase()).join(' ');
Y esto es todo, espero que haya resultado interesante!!.
¿Te ha resultado de interés?, puedes apoyar a Excel Signum con una pequeña donación.
¡¡Muchas gracias!!
Mediante la suscripción al blog, la realización comentarios o el uso del formulario de contacto estás dando tu consentimiento expreso al tratamiento de los datos personales proporcionados según lo dispuesto en la ley vigente (LOPD). Tienes más información al respecto en esta página del blog: Política de Privacidad y Cookies