CLR: .Net / Mono / Boo / Otros CLR > C#
Expresiones Regulares para dar formato
(1/1)
delvis.robaina:
¡ 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:
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# --- string oracion = "aaaaaa"; string oracionNueva =""; int contador = 0; foreach (char c in oracion) { if (contador == 0 || contador == 1 || contador == 3) { oracionNueva += "-" + c; } else { oracionNueva += c; } contador++; }
Con ese código tu armas tú propio formato, bueno.. espero te sirva saludos.. :)
delvis.robaina:
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:
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:
Muchas gracias por publicar tu respuesta.. la probaré apenas tenga algo de tiempo.. :D genial!!... :bravo:
Navegación
Ir a la versión completa