2013-07-06 16 views
5

Ho stringa come di seguitoPerché string.TrimEnd non rimuovere solo ultimo carattere nella stringa

2,44,AAA,BBB,1,0,,, 

Così ora voglio rimuovere solo all'ultimo comma sopra stringa. Quindi voglio uscita come

2,44,AAA,BBB,1,0,, 

ho deciso di utilizzare TrimeEnd come di seguito

str.ToString.TrimEnd(',') 

Ma rimosso tutte le virgole dopo 0. Quindi ricevo uscita come di seguito

2,44,AAA,BBB,1,0 

Perché rimuove tutte e 3 le virgole dopo 0? Devo solo rimuovere l'ultimo carattere nella stringa

risposta

30

Perché rimuove tutte e 3 le virgole dopo 0?

Perché questo è quello che è documented fare:

Valore restituito:
La stringa che rimane dopo che tutte le occorrenze dei caratteri nel parametro trimChars vengono rimossi dalla fine della stringa corrente .

Se si desidera solo il carattere finale rimosso, è possibile utilizzare:

if (str.EndsWith(",")) 
{ 
    str = str.Substring(0, str.Length - 1); 
} 

o equivalentemente:

if (str.EndsWith(",")) 
{ 
    str = str.Remove(str.Length - 1); 
} 
+15

@ DannyBeckett: Per favore non andare a rimuovere le parentesi graffe dal mio codice. Il mio stile di codifica personale (e quello che è stato applicato in tutte le società in cui ho lavorato) è * sempre * includere parentesi graffe per cicli, istruzioni 'if' ecc. Evita i problemi in cui l'indentazione può implicare che il codice si comporti modo, quando si comporta in realtà in modo diverso. –

+0

Nessun problema, e grazie per il consiglio. –

+0

Mille grazie. Ha funzionato – Happy

4

che ci si aspetta. String.TrimEnd Rimuove tutti finali occorrenze di un insieme di caratteri specificati in una matrice dall'oggetto String corrente

Procedimento TrimEnd(char[] trimChars) rimuove dalla stringa corrente tutti i caratteri finali che si trovano nel parametro trimChars. L'operazione di taglio si ferma quando si incontra il primo carattere che non è in trimChars alla fine della stringa

Utilizzare questo invece:

str = str.EndsWith(",") ? str.Substring(0, str.Length - 1) : str; 
1

È possibile utilizzare questo:

string s = "2,44,AAA,BBB,1,0,,,"; 
s = s.Remove(s.Length-1, 1); 
+0

Questo rimuoverà * qualsiasi * carattere, indipendentemente dal fatto che sia o meno una virgola. –

+0

Specifico per questo caso-> Ma la domanda era di rimuovere finalmente la virgola .. – Vishal

+0

Non so se forse hai frainteso ... supponi che la stringa fosse: 'string s =" 2,44, AAA, BBB , 1,0 ,,, 123', che cosa accadrebbe? –

Problemi correlati