Pasar a mayúsculas solo el primer carácter

Hay múltiples métodos para conseguir que solamente el primer carácter de una cadena esté en mayúsculas y el resto en minúsculas, pero siempre se puede conseguir «rascar» unos cuantos recursos, gastando menos memoria, realizando menos cálculos o más simples, etc.

public static string FirstCharCapital ( this string p_str )
{
  if ( string.IsNullOrEmpty ( p_str ) )
    return string.Empty;

  return p_str[ 0 ].ToString ().ToUpper () + p_str.Substring ( 1 ).ToLower ();
}
public static string ToFirstUpperOnly ( this string p_str )
{
  if ( string.IsNullOrEmpty ( p_str ) )
    return string.Empty;
  
  char[] a = p_str.ToLower ().ToCharArray ();
  a[ 0 ]   = char.ToUpper ( a[ 0 ] );
  return new string ( a );
}

El primer método es más corto, cuenta con menor número de sentencias, pero tiene la penalización de estar generando cuatro nuevas cadenas de caracteres. Una al utilizar el método Substring, dos mas al usar los métodos ToUpper y ToLower ( devuelven una copia, no modificando la cadena original ) y la última al realizar la concatenación ( + ). En cambio el segundo método, al no realizar concatenación alguna, «solo» genera tres nuevas cadenas ( ToLower, ToUpper y new ).

No siempre hay que centrar la atención en buscar la solución «más optima» ( si mi profesora de IA leyese esto, me mata… ), porque algunos métodos son invocados de forma muy esporádica e igual compensa tener un código más legible y mantenible, siendo más fácil de actualizar y corregir errores.

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *