¿El método .NET String.Format permite la colocación de una cadena en una posición fija dentro de una cadena de longitud fija?
"La cuerda va aquí" "La cuerda va aquí" "La cuerda va aquí"
¿Cómo se hace esto usando .NET?
Editar - He intentado Format / PadLeft / PadRight hasta la muerte. No funcionan. No se porque. Terminé escribiendo mi propia función para hacer esto.
Editar : cometí un error y usé dos puntos en lugar de una coma en el especificador de formato. Debería ser "{0,20}".
Gracias por todas las excelentes y correctas respuestas.
Respuestas:
Esto le dará exactamente las cadenas que solicitó:
fuente
,
lugar de:
como en todos los demás casos de uso de formato?El primero y el último, al menos, son posibles utilizando la siguiente sintaxis:
fuente
A partir de Visual Studio 2015, también puede hacer esto con cadenas interpoladas (es un truco del compilador, por lo que no importa a qué versión del marco .net apunte).
fuente
Te han mostrado
PadLeft
yPadRight
. Esto completará lo que faltaPadCenter
.Nota personal: no olvide actualizar su propio CV: "¡Un día, incluso arreglé el código de Joel Coehoorn!" ;-D -Serge
fuente
prueba esto:
para el centro, obtenga la longitud de la cuerda y haga padleft y padright con los caracteres necesarios
fuente
String.Format("{0,-length}", something)
no se compilarán.)Gracias por la discusión, este método también funciona (VB):
Aquí está la versión de C #:
Para facilitar la comprensión, se usa la variable entera firstpad . s.PadLeft (firstpad) aplica los (número correcto de) espacios en blanco iniciales. El PadRight más a la derecha (deseado) tiene una encuadernación más baja termina aplicando espacios en blanco al final.
fuente
Aquí hay una versión de VB.NET que creé, inspirada en la respuesta de Joel Coehoorn, la edición de Oliver y el comentario de shaunmartin:
Esto se configura como una extensión de cadena, dentro de un Módulo público (la forma en que hace Extensiones en VB.NET, un poco diferente a C #). Mi pequeño cambio es que trata una cadena nula como una cadena vacía, y rellena una cadena vacía con el valor de ancho (satisface mis necesidades particulares). Esperemos que esto se convierta fácilmente a C # para cualquier persona que lo necesite. Si hay una mejor manera de hacer referencia a las respuestas, ediciones y comentarios que mencioné anteriormente, que inspiraron mi publicación, hágamelo saber y lo haré. Soy relativamente nuevo en la publicación y no pude resolverlo. deja un comentario (puede que todavía no tenga suficiente representante).
fuente
Publiqué un artículo de CodeProject que puede ser lo que quieres.
Ver: AC # way para ancho indirecto y formato de estilo.
Básicamente es un método, FormatEx, que actúa como String.Format, excepto que permite un modificador de alineación centrado.
Significa centrar el valor de varArgs [0] en un campo de 10 caracteres, inclinarse hacia la derecha si se requiere un espacio de relleno adicional.
Significa centrar el valor de varArgs [0] en un campo de 10 caracteres, inclínese hacia la izquierda si se requiere un espacio de relleno adicional.
Editar: Internamente, es una combinación de Joel's PadCenter con algún análisis para reestructurar el formato y varArgs para una llamada a String.Format que hace lo que desea.
-Jesse
fuente
parece que quieres algo como esto, que colocará tu cadena en un punto fijo en una cadena de longitud constante:
tenga en cuenta que esto tendrá problemas si mystring.length + leftbuffer excede la longitud total
fuente
fuente