• Domingo 17 de Noviembre de 2024, 19:55

Autor Tema:  Expresiones Regulares para dar formato  (Leído 4081 veces)

delvis.robaina

  • Nuevo Miembro
  • *
  • Mensajes: 3
    • Ver Perfil
Expresiones Regulares para dar formato
« en: Martes 26 de Julio de 2011, 19:13 »
0
¡ Hola !

Utilizo xrReport de DevExpress y quiero formatear una cadena para mostrarla con cierto formato en el reporte.

La cadena que se almacena en la base de datos es por ejemplo "190065100100A1001005010" y quiero mostrarla con el formato siguiente: "190-065-100100-A-100100-5010".

He intentado con String.Format("###-###-######-A-######-####",cad), pero no me funciona porque cad es del tipo String.

He leido que se puede hacer utilizando Replace de las expresiones regulares pero no he dado con la solución.

Alguna Idea???

Gracias de antemano.

gabio2

  • Miembro MUY activo
  • ***
  • Mensajes: 402
  • Nacionalidad: mx
    • Ver Perfil
Re:Expresiones Regulares para dar formato
« Respuesta #1 en: Miércoles 27 de Julio de 2011, 18:04 »
0
Hola que tal, bueno te comento.. yo he usado las expresiones regulares, pero solo para validar datos.. por ejemplo RFC (válido que tenga 13 o 14 caracteres) o un correo electrónico, válido que tenga @ y .  , pero para lo que tú quieres, nunca las he usado.. es decir para formatear una cadena, no estaria de más investigar más a fondo, bueno esa podria ser tú tarea.. de hecho si encuentras alguna solución usando las expresiones regulares seria bueno que lo pusieras para enseñarnos .. :) ...


Ahora una solución rápida para salir del problema podria ser la siguiente:

Código: C#
  1.             string oracion = "aaaaaa";
  2.             string oracionNueva ="";
  3.             int contador = 0;
  4.             foreach (char c in oracion)
  5.             {
  6.                 if (contador == 0 || contador == 1 || contador == 3)
  7.                 {
  8.                     oracionNueva += "-" + c;
  9.                 }
  10.                 else
  11.                 {
  12.                     oracionNueva += c;
  13.                 }
  14.                 contador++;
  15.             }
  16.  


Con ese código tu armas tú propio formato, bueno.. espero te sirva saludos.. :)
@gabio87

delvis.robaina

  • Nuevo Miembro
  • *
  • Mensajes: 3
    • Ver Perfil
Re:Expresiones Regulares para dar formato
« Respuesta #2 en: Jueves 28 de Julio de 2011, 21:40 »
0
Lo que sucede es que casi nunca podemos mostrar todo el problema, eso así lo tengo hecho, pero he visto en internet que se usan expresiones regulares para dar formato, lo que no he logrado hacerlo para mi caso, el problema es que toda esa cadena es producto de una segmentación que tiene un tamaño X que se almacena en la BD, tiene un separador X que también se almacena en la BD y tiene un tipo (numérico o carácter) que se almacena en la bd. Lo que quería es almacenar la expresión regular y a partir de ahí formatear.


Saludos, y gracias por tu respuesta.

delvis.robaina

  • Nuevo Miembro
  • *
  • Mensajes: 3
    • Ver Perfil
Re:Expresiones Regulares para dar formato
« Respuesta #3 en: Jueves 28 de Julio de 2011, 22:05 »
0
Esta es la propuesta que me recomendaron usando Regex:

string cad = "190065100100A1001005010";
string pattern = @"([0-9/]{3})([0-9/]{3})([0-9/]{6})([A-Z/]{1})([0-9/]{6})([0-9/]{4})";
string result = Regex.Replace ( cad, pattern, "$1-$2-$3-$4-$5-$6" );


([0-9/]{3}) <-- 3 numeros

([0-9/]{3}) <-- 3 numeros

([0-9/]{6}) <-- 6 numeros

([A-Z/]{1}) <-- 1 letra

([0-9/]{6}) <-- 6 numeros

([0-9/]{4}) <-- 4 numeros

$1- <-- 3 numeros y -

$2- <-- 3 numeros y -

$3- <-- 6 numeros y -

$4- <-- 1 letra y -

$5- <-- 6 numeros y -

$6 <-- 4 numeros


Espero le sirva a los demás como conocimiento.

Gracias a todos.

Saludos,

Delvis

gabio2

  • Miembro MUY activo
  • ***
  • Mensajes: 402
  • Nacionalidad: mx
    • Ver Perfil
Re:Expresiones Regulares para dar formato
« Respuesta #4 en: Viernes 29 de Julio de 2011, 05:16 »
0
Muchas gracias por publicar tu respuesta.. la probaré apenas tenga algo de tiempo.. :D  genial!!...  :bravo:
@gabio87