2011-09-05 11 views
9

Sto cercando di aggiungere spazi alla fine di una stringa in C#:Imbottitura una stringa utilizzando il metodo PadRight

Trip_Name1.PadRight(20); 

cercato anche:

Trip_Name1.PadRight(20,' '); 

Niente di tutto questo sembra funzionare. Tuttavia posso tamponare la corda con qualsiasi altro personaggio. Perché?

avrei dovuto essere più specifici, ecco il codice completo:

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

Che cos'è il "Trip_Name1" nei test? Qual è il valore di ritorno di tali metodi (ad esempio, cosa significa * "non sembra funzionare" * significa)? E tu sai che questi metodi non modificheranno il valore di "Trip_Name1", giusto? –

+1

Puoi fornire il codice di esempio? A proposito, le stringhe sono immutabili e devi riassegnare il valore del risultato dopo il padding –

+0

avrei dovuto essere più specifico, ecco il codice completo: lnk_showmatch_1.Text = u_trip.Trip_Name1.PadRight (20, ''); – Bruce

risposta

23

stringa sono immutable, essi non possono essere cambiati. PadRight restituisce una nuova istanza della stringa inserita, non cambia quella da cui è stata chiamata. Quello che vuoi è questo:

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

C'è una grande discussione sul this StackOverflow domanda sul perché le stringhe sono immutabili.

EDIT:

Niente di tutto questo sembra funzionare. Tuttavia posso tamponare la corda con qualsiasi altro personaggio.

In realtà lo si riassegna come nell'esempio sopra? Se questo è il caso - quindi senza ulteriori dettagli Posso solo pensare di quanto segue:

  1. Se si archiviano questo in un database e il recupero di esso, alcuni database con le impostazioni corrette possono "Trim" per voi.
  2. Hai la logica da qualche altra parte che sta ritagliando gli spazi bianchi. Questo è comune quando si ha a che fare con l'input dell'utente.

EDIT 2:

avrei dovuto essere più preciso

ho intenzione di prendere un ipotesi, sulla base di convenzioni di denominazione che avete a che fare con l'HTML/ASP.NET. Nella maggior parte dei casi, in HTML - white space is collapsed. Ad esempio:

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

Entrambi i a tag verrà visualizzata la stessa perché lo spazio bianco viene compresso. Se stai effettivamente lavorando con HTML, è probabile che la tua ragione e perché il padding funzioni per tutti gli altri personaggi. Se si esegue un view-source del markup reso, contiene gli spazi bianchi aggiuntivi?

Se si desidera mantenere gli spazi bianchi, provare ad applicare uno stile CSS sul proprio elemento chiamato white-space e impostarlo su pre. Ad esempio:

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

Ciò causerà la conservazione dello spazio bianco. Tieni presente che l'utilizzo dello spazio bianco come questo presenta degli svantaggi. I browser non li rendono in modo identico, ecc. Non lo userei per scopi di layout.Prendi in considerazione l'utilizzo di CSS e qualcosa come min-width invece.

+0

@ user554134 - Ho apportato alcune altre modifiche in base all'aggiornamento. – vcsjones

+0

Grazie signore, white-space: pre ha fatto il trucco! – Bruce

+0

Non funziona anche per me. Stesso problema var str = INRECField.PadRight (11, ' ') + INRECDate? .ToString ("MMDDYY") + INRECModel.PadRight (12,' ') + INRECSerial.PadRight (14,'') + INRECAccessCode .PadRight (5, ''); str = str.PadRight (32, ''); – user2831855

4

Tenere a mente, in questo modo non funziona per qualsiasi funzionalità di manipolazione delle stringhe perché la stringa è immutabile. Restituiscono solo una nuova stringa anziché aggiornare l'istanza esistente.

PadRight restituisce una nuova stringa che ha lasciato-allinea i caratteri in questa stringa da loro imbottitura sulla destra con un Unicode carattere specificato, per una lunghezza totale specificata.

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

EDIT:

Il controllo sembra essere il taglio degli spazi finali. Quindi, prova a impostare il padding per il controllo anziché per il testo.

Problemi correlati