Ejercicio: Detección de espaciado interno y alineación
- 12 minutos
El string.Format()
método se usa para realizar formatos compuestos como en el ejemplo:
string first = "Hello";
string second = "World";
string result = string.Format("{0} {1}!", first, second);
Console.WriteLine(result);
Es posible que haya parecido un poco extraño que una palabra clave que representa un tipo de datos tenga métodos que pueda llamar de la misma manera que llama a métodos de la clase Console
. El hecho es que hay muchos métodos similares en el string
tipo de dato y cualquier cadena de texto literal o variable de tipo texto.
Esta es una breve lista de categorías de estos métodos integrados para que pueda hacerse una idea de lo que es posible.
- Métodos que agregan espacios en blanco con fines de formato (
PadLeft()
,PadRight()
) - Métodos que comparan dos cadenas o facilitan la comparación (
Trim()
,TrimStart()
,TrimEnd()
,GetHashcode()
, laLength
propiedad ) - Métodos que le ayudan a determinar qué está dentro de una cadena, o incluso recuperar solo una parte de la cadena (
Contains()
,StartsWith()
,EndsWith()
,Substring()
) - Métodos que cambian el contenido de la cadena reemplazando, insertando o quitando partes (
Replace()
,Insert()
,Remove()
) - Métodos que convierten una cadena en una matriz de cadenas o caracteres (
Split()
,ToCharArray()
)
Aplicar formato a cadenas agregando espacios en blanco antes o después
El PadLeft()
método agrega espacios en blanco al lado izquierdo de la cadena para que el número total de caracteres sea igual al argumento que se envía. En este caso, desea que la longitud total de la cadena sea de 12 caracteres.
Elimine o use el operador de comentario de línea
//
para comentar todo el código de los pasos anteriores.Actualice el código en el editor de Visual Studio Code de la siguiente manera:
string input = "Pad this"; Console.WriteLine(input.PadLeft(12));
En el menú Archivo de Visual Studio Code, seleccione Guardar. Guarde el archivo Program.cs antes de compilar o ejecutar el código.
En el panel EXPLORER, para abrir un terminal en la ubicación de la carpeta TestProject, haga clic con el botón derecho en TestProject y, a continuación, seleccione Abrir en terminal integrado. Debe abrirse un panel de terminal y debe incluir un símbolo del sistema que muestre que el terminal está abierto en la ubicación de la carpeta TestProject.
En la ventana de comandos de Terminal, para ejecutar tu código, escribe dotnet run y presiona la tecla Enter.
Nota:
Si ve un mensaje que indica "No se ha podido encontrar un proyecto para ejecutar", asegúrese de que el símbolo del sistema del terminal muestra la ubicación de carpeta TestProject prevista. Por ejemplo:
C:\Users\someuser\Desktop\csharpprojects\TestProject>
Al ejecutar el código, observará que cuatro caracteres prefijos a la izquierda de la cadena llevan la longitud a 12 caracteres.
Pad this
Para agregar espacio o caracteres al lado derecho de la cadena, use el
PadRight()
método en su lugar. 1. Actualice el código en el editor de Visual Studio Code de la siguiente manera:Console.WriteLine(input.PadRight(12));
Guarde el archivo de código y use Visual Studio Code para ejecutar el código. No verá los caracteres agregados al final de la cadena, pero están allí.
¿Qué es un método sobrecargado?
En C#, un método sobrecargado es otra versión de un método con argumentos adicionales o diferentes que modifican ligeramente la funcionalidad del método, como sucede con la versión sobrecargada del PadLeft()
método.
También puede llamar a una segunda versión sobrecargada del método y pasar el carácter que quiera usar en lugar de un espacio. En este caso, el espacio adicional se rellenará con el carácter de guión.
Elimine o use el operador
//
de comentario de línea para comentar todo el código del paso anterior.Actualice el código en el editor de Visual Studio Code de la siguiente manera:
Console.WriteLine(input.PadLeft(12, '-')); Console.WriteLine(input.PadRight(12, '-'));
Guarde el archivo de código y use Visual Studio Code para ejecutar el código. Debería ver que se agregan cuatro guiones como prefijo a la izquierda de la cadena para que tenga una longitud de 12 caracteres.
----Pad this Pad this----
Ahora, aplique este conocimiento nuevo a otro escenario del mundo real.
Uso de cadenas con relleno
Supongamos que trabaja para una empresa de procesamiento de pagos que sigue admitiendo sistemas centrales heredados. A menudo, esos sistemas requieren que los datos se introduzcan en columnas específicas. Por ejemplo, almacene el identificador de pago en las columnas de 1 a 6, el nombre del beneficiario en las columnas 7 a 30 y el Importe de pago en las columnas 31 a 40. Además, lo más importante es que el importe del pago se debe alinear a la derecha.
Se le pide que compile una aplicación que convierta los datos en el sistema de administración de bases de datos relacionales al formato de archivo heredado. Para asegurarse de que la integración funciona correctamente, el primer paso es confirmar el formato de archivo proporcionando al mantenedor del sistema heredado un ejemplo de la salida. Más adelante, usará este trabajo para enviar cientos o miles de pagos para procesarlos a través de un archivo de texto ASCII.
Agregar el identificador de pago a la salida
Para empezar, imprima el identificador de pago en las seis primeras columnas. Elige algunos datos de pago aleatorios que deben ser adecuados para los fines.
Elimine o use el operador
//
de comentario de línea para comentar todo el código del paso anterior.Actualice el código en el editor de Visual Studio Code de la siguiente manera:
string paymentId = "769C"; var formattedLine = paymentId.PadRight(6); Console.WriteLine(formattedLine);
Vuelva a usar la
formattedLine
variable para compilar la cadena de salida.Guarde el archivo de código y use Visual Studio Code para ejecutar el código. Deberías ver la siguiente salida:
769C
Hay dos espacios en blanco a la derecha que no son visibles. En el paso siguiente se confirmará que existen.
Adición del nombre del beneficiario a la salida
A continuación, se agregará un nombre de beneficiario ficticio y se rellenará de la forma adecuada.
Actualice el código en el editor de Visual Studio Code de la siguiente manera:
string paymentId = "769C"; string payeeName = "Mr. Stephen Ortega"; var formattedLine = paymentId.PadRight(6); formattedLine += payeeName.PadRight(24); Console.WriteLine(formattedLine);
El
+=
operador realiza una concatenación de cadena, tomando el valor anterior de la variableformattedLine
y agregando el nuevo valor a ella. Es un equivalente abreviado en el ejemplo de código siguiente:formattedLine = formattedLine + payeeName.PadRight(24);
Guarde el archivo de código y use Visual Studio Code para ejecutar el código. Deberías ver la siguiente salida:
769C Mr. Stephen Ortega
De nuevo, hay bastantes espacios en blanco después del nombre del beneficiario. Además, hay dos espacios en blanco después del identificador de pago del paso 1.
Añadir el monto de pago al resultado
A continuación, agregue una cantidad de pago ficticia y asegúrese de usar PadLeft()
para alinear la salida correctamente.
Actualice el código en el editor de Visual Studio Code de la siguiente manera:
string paymentId = "769C"; string payeeName = "Mr. Stephen Ortega"; string paymentAmount = "$5,000.00"; var formattedLine = paymentId.PadRight(6); formattedLine += payeeName.PadRight(24); formattedLine += paymentAmount.PadLeft(10); Console.WriteLine(formattedLine);
Guarde el archivo de código y use Visual Studio Code para ejecutar el código. Deberías ver la siguiente salida:
769C Mr. Stephen Ortega $5,000.00
Este resultado es muy parecido a lo que se supone que buscan los encargados del mantenimiento del sistema heredado.
Agregue una línea de números encima de la salida para confirmar más fácilmente el resultado.
Dado que es difícil contar las columnas exactas en las que aparece cada elemento de datos, se agrega una línea directamente encima de la salida que le ayuda a contar las columnas.
Console.WriteLine("1234567890123456789012345678901234567890");
Actualice el código en el editor de Visual Studio Code de la siguiente manera:
string paymentId = "769C"; string payeeName = "Mr. Stephen Ortega"; string paymentAmount = "$5,000.00"; var formattedLine = paymentId.PadRight(6); formattedLine += payeeName.PadRight(24); formattedLine += paymentAmount.PadLeft(10); Console.WriteLine("1234567890123456789012345678901234567890"); Console.WriteLine(formattedLine);
Guarde el archivo de código y use Visual Studio Code para ejecutar el código. Debería ver la siguiente salida, que puede enviar a los mantenedores del sistema heredado para confirmar que la nueva integración funciona correctamente:
1234567890123456789012345678901234567890 769C Mr. Stephen Ortega $5,000.00
¡Éxito!
Resumen
Hay algunas conclusiones importantes de esta unidad.
- El
string
tipo de datos, las cadenas literales y las variables de tipo string implementan muchos métodos auxiliares para dar formato, modificar y realizar otras operaciones en cadenas. - Los
PadLeft()
métodos yPadRight()
agregan espacio en blanco (o opcionalmente, otro carácter) a la longitud total de una cadena. - Usa
PadLeft()
para alinear una cadena a la derecha. - Algunos métodos están sobrecargados, lo que significa que tienen varias versiones del método con distintos argumentos que afectan a su funcionalidad.
- El
+=
operador concatena una nueva cadena a la derecha a la cadena existente de la izquierda.