Trabajo con números y cadenas en .NET

Iré añadiendo pequeños fragmentos de código ( code snippets en ingles ) según me vaya encontrando con diferentes problemas que exijan alguna conversión o «truquito» para trabajar con números y cadenas de texto.

  • Soportar el punto o la coma como carácter separador

Al parsear un float en .NET por defecto solo está soportado el uso de la coma ( , ) para separar entre la parte entera y la decimal, pero usando CultureInfo.InvariantCulture se modifica dicho comportamiento, pasando a ser el punto ( . ) el carácter utilizado para separar ambas partes, no soportándose en tal caso el uso de la coma. En si toca elegir entre utilizar la coma o el punto, lo que no es nada raro, porque no vas a tener un documento en el que se use uno u otro carácter indistintamente y de forma aleatoria, produciendo una gran confusión al lector, sino que se buscará siempre una homogeneidad en el formato.

string str = "0.25";
float  num = float.Parse ( str, CultureInfo.InvariantCulture ); // 0.25f

str = "0,33";
str = str.Replace ( ',', '.' );
if ( int.TryParse ( str, NumberStyles.Float, CultureInfo.InvariantCulture, out num ) )
  num = 0f;
  • Añadir el cero de la parte entera en números inferiores a uno

No es raro que el usuario introduzca cantidades menores a uno obviando la parte entera, el cero a la izquierda de la coma ( o punto ) y por evitar futuros problemas o ya sea simplemente por estética, no es difícil conseguir ese cero.

string str = ".25";
float  num = float.Parse ( str, CultureInfo.InvariantCulture ); // 0.25f
str        = num.ToString (); // "0.25"

str = ",25";
num = float.Parse ( str ); // 0,25f
str = num.ToString (); // "0,25"
  • Eliminar espaciado múltiple dejando el normal

Un espacio hace su función pero varios seguidos en muchos contextos no tienen sentido alguno y puede interesar quitar ese exceso de espaciado entre palabras, parámetros, etc… dejando únicamente el espaciado «normal». Una forma elegante de solucionarlo es utilizar una expresión regular que represente la búsqueda de uno o más ( + ) espacios en blanco ( \s ) consecutivos. Ya de paso en el fragmento de código aprovecho a eliminar los espacios en blanco que pueda haber en los extremos de la cadena.

string str = "Texto  de     ejemplo";
str = Regex.Replace ( str.Trim (), @"\s+", " " );
// "Texto de ejemplo"

 

 

 

 

Deja un comentario

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