Saltar al contenido

Pad a la izquierda con ceros

Ya no tienes que indagar más en internet ya que has llegado al lugar adecuado, tenemos la respuesta que quieres sin problemas.

Solución:

Microsoft ha incorporado funciones para esto:

someString = someString.PadLeft(8, '0');

Y aquí hay un artículo sobre MSDN

Para usar una expresión regular, haga algo como esto:

string someText = "asd 123 rete"; 
someText = Regex.Replace(someText, @"d+", n => n.Value.PadLeft(8, '0'));

El hilo es antiguo, pero tal vez alguien lo necesite.

Nickon afirma que quiere usar expresiones regulares. ¿Por qué? No importa, tal vez sea divertido. Tuve que hacer un reemplazo en línea en SQL, por lo que algunas funciones SQL caseras que llaman a una expresión regular de C # han sido útiles.

Lo que necesitaba rellenar se parecía a esto:

abc 1.1.1
abc 1.2.1
abc 1.10.1

y yo quería:

abc 001.001.001
abc 001.002.001
abc 001.010.001

Para poder ordenarlo alfabéticamente.

La única solución hasta ahora (que encontré) fue hacer el relleno y truncar a la longitud correcta en dos pasos. No podía usar un Lambda ya que estaba en SQL y no había preparado mis funciones para eso.

//This pads any numbers and truncates it to a length of 8
var unpaddedData = "...";
var paddedData = Regex.Replace(unpaddedData , "(?<=[^d])(?d+)",
                                                     "0000000$digits");
var zeroPaddedDataOfRightLength = Regex.Replace(paddedData ,"d+(?=d8)","");

Explicaciones:

(?<=[^d])(?d+)
(?<=[^d])       Look behind for any non digit, this is needed if there are 
                 more groups of numbers that needs to be padded
(?d+)   Find the numbers and put them in a group named digits to be 
                 used in the replacement pattern

0000000$digits Pads all the digits matches with 7 zeros

d+(?=d8)     Finds all digits that are followed by at exactly 8 digits. 
                 ?= Doesn't capture the 8 digits.

Regex.Replace(...,"d+(?=d8)","")   
                 Replaces the leading digits with nothing leaving the last 8.

Si no tiene ningún archivo adjunto a Regex, simplemente use cadenas de formato:

C # convertir int a string con ceros de relleno?

http://www.xtremedotnettalk.com/showthread.php?t=101461

Si sostienes algún reparo o capacidad de limar nuestro post puedes escribir una nota y con mucho placer lo interpretaremos.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)


Tags : / /

Utiliza Nuestro Buscador

Deja una respuesta

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