2011-09-05 10 views
9

Estoy tratando de agregar espacios al final de una cadena en C#:Relleno una cadena utilizando el método PadRight

Trip_Name1.PadRight(20); 

También probamos:

Trip_Name1.PadRight(20,' '); 

Nada de esto parece funcionar. Sin embargo, puedo rellenar la cuerda con cualquier otro personaje. ¿Por qué?

que debería haber sido más específico, aquí está el código completo:

lnk_showmatch_1.Text = u_trip.Trip_Name1.PadRight(20,' '); 
+1

¿Qué es 'Trip_Name1' en sus pruebas? ¿Cuál es el valor de retorno de esos métodos (es decir, qué significa que * "no funciona" *)? Y sabe que estos métodos no modificarán el valor de 'Trip_Name1', ¿verdad? –

+1

¿Puede proporcionar el código de muestra? Por cierto, las cadenas son inmutables y debe reasignar el valor del resultado después de rellenar –

+0

Debería haber sido más específico, aquí está el código completo: lnk_showmatch_1.Text = u_trip.Trip_Name1.PadRight (20, ''); – Bruce

Respuesta

23

de cadena se immutable, que no se puede cambiar. PadRight devuelve una nueva instancia de la cadena rellenada, no cambia la instancia desde la que se invocó. Lo que se quiere es la siguiente:

Trip_Name1 = Trip_Name1.PadRight(20,' '); 

Hay un gran debate sobre this pregunta StackOverflow de por qué las cadenas son inmutables.

EDITAR:

Nada de esto parece funcionar. Sin embargo, puedo rellenar la cuerda con cualquier otro personaje.

¿Lo está reasignando como en el ejemplo anterior? Si ese es el caso - a continuación, sin más detalle sólo puedo pensar en lo siguiente:

  1. Si va a guardar esto en una base de datos y la recuperación de la misma, algunas bases de datos con los valores correctos pueden "Recorte" para usted.
  2. Tiene la lógica en otro lugar que está recortando los espacios en blanco. Esto es común cuando se trata de la entrada del usuario.

EDIT 2:

que debería haber sido más específico

Voy a tomar una conjetura salvaje basado en sus convenciones de nomenclatura que se trata con HTML/ASP.NET. En la mayoría de los casos, en HTML - white space is collapsed. Por ejemplo:

<div><a>Hello   World</a></div> 
<div><a>Hello World</a></div> 

Tanto de las etiquetas a rendirá el mismo porque el espacio en blanco se derrumbó. Si realmente trabajas con HTML, esa es tu razón y por qué el relleno funciona para todos los demás personajes. Si realiza una fuente de vista del marcado rendido, ¿contiene los espacios en blanco adicionales?

Si desea mantener los espacios en blanco, intente aplicar un estilo CSS en su elemento llamado white-space y configúrelo en pre. Por ejemplo:

<a style="white-space:pre">hello  world  </a> 

Eso hará que se preserve el espacio en blanco. Tenga en cuenta que el uso de espacios en blanco como este tiene desventajas. Los navegadores no los representan de manera idéntica, etc. No los usaría para propósitos de diseño.Considere usar CSS y algo así como min-width en su lugar.

+0

@ user554134 - He realizado algunas modificaciones más en función de su actualización. – vcsjones

+0

Gracias señor, espacio en blanco: pre hizo el truco! – Bruce

+0

No funciona para mí también. El mismo problema var str = INRECField.PadRight (11 ' ') + INRECDate? .ToString ("MMDDAA") + INRECModel.PadRight (12' ') + INRECSerial.PadRight (14'') + INRECAccessCode .PadRight (5, ''); str = str.PadRight (32, ''); – user2831855

4

Tenga en cuenta que de esa manera no funcionará para ninguna funcionalidad de manipulación de cadenas porque la cadena es inmutable. Simplemente devuelven una nueva cadena en lugar de actualizar la instancia existente.

PadRight devuelve una nueva cadena que dejó-alinea los caracteres en esta cadena , rellenándolas a la derecha con un carácter especificado Unicode , para una longitud total especificada.

string Trip_Name1 = Trip_Name1.PadRight(20,' '); 

EDIT:

su control parece ser el recorte de los espacios que terminan. Por lo tanto, intente configurar el relleno para el control en lugar de para el texto.

Cuestiones relacionadas