Voglio rimuovere gli ultimi tre caratteri da una stringa:
string myString = "abcdxxx";
Notare che la stringa è dati dinamici.
Voglio rimuovere gli ultimi tre caratteri da una stringa:
string myString = "abcdxxx";
Notare che la stringa è dati dinamici.
Risposte:
leggi gli ultimi 3 caratteri dalla stringa [Domanda iniziale]
Puoi usare string.Substring e dargli l'indice iniziale e otterrà la sottostringa a partire dall'indice dato fino alla fine.
myString.Substring(myString.Length-3)
Recupera una sottostringa da questa istanza. La sottostringa inizia in una posizione del carattere specificata. MSDN
Modifica , per post aggiornato
Rimuovi gli ultimi 3 caratteri dalla stringa [Domanda aggiornata]
Per rimuovere gli ultimi tre caratteri dalla stringa è possibile utilizzare string.Substring (Int32, Int32) e assegnargli l'indice iniziale 0e l'indice finale tre in meno rispetto alla lunghezza della stringa . Otterrà la sottostringa prima degli ultimi tre caratteri.
myString = myString.Substring(0, myString.Length-3);
Metodo String.Substring (Int32, Int32)
Recupera una sottostringa da questa istanza. La sottostringa inizia in una posizione del carattere specificata e ha una lunghezza specificata.
Puoi anche usare il metodo String.Remove (Int32) per rimuovere gli ultimi tre caratteri passando l'indice iniziale come lunghezza - 3 , rimuoverà da questo punto alla fine della stringa.
myString = myString.Remove(myString.Length-3)
Restituisce una nuova stringa in cui tutti i caratteri nell'istanza corrente, che iniziano in una posizione specificata e continuano fino all'ultima posizione, sono stati eliminati
Ho letto tutto questo, ma volevo qualcosa di un po 'più elegante. Solo per rimuovere un certo numero di caratteri dalla fine di una stringa:
string.Concat("hello".Reverse().Skip(3).Reverse());
produzione:
"he"
Enumerable.Reversememorizza nel buffer la stringa in a char[], quindi in una nuova char[]che è 3 più corta e quindi ne genera una nuova string(con un'altra internamente char[]). Un approccio migliore sarebbe new string("hello".Reverse().Skip(3)), o semplicemente scrivere la tua funzione di estensione di stringa AllBut(this string in, int i)che utilizza Substring.
Lengthmemorizzata.
.SkipLast(n). Non c'è bisogno di invertire nulla. "hello".SkipLast(3)dà"he"
myString.Remove(myString.Length-3);
myString = myString.Remove(myString.Length - 3)questo è.
string test = "abcdxxx";
test = test.Remove(test.Length - 3);
//output : abcd
È possibile utilizzare String.Removeper eliminare da una posizione specificata alla fine della stringa.
myString = myString.Remove(myString.Length - 3);
Probabilmente non è esattamente quello che stai cercando dato che dici che sono "dati dinamici" ma, data la tua stringa di esempio, funziona anche:
? "abcdxxx".TrimEnd('x');
"abc"
myString.Substring(myString.Length - 3, 3)
Ecco alcuni esempi sulla sottostringa. >>
http://www.dotnetperls.com/substring
Riferiscili.
Rimuove gli ultimi caratteri da una stringa
TXTB_DateofReiumbursement.Text = (gvFinance.SelectedRow.FindControl("lblDate_of_Reimbursement") as Label).Text.Remove(10)
.Text.Remove(10)// utilizzato per rimuovere il testo a partire dall'indice 10 fino alla fine
Facile. text = text.remove(text.length - 3). Ho sottratto 3 perché la Removefunzione rimuove tutti gli elementi da quell'indice alla fine della stringa che è text.length. Quindi se sottraggo 3, ottengo la stringa con 3 caratteri rimossi da essa.
Puoi generalizzare questo per rimuovere i acaratteri dalla fine della stringa, in questo modo:
text = text.remove(text.length - a)
Quindi quello che ho fatto è stata la stessa logica. La removefunzione rimuove tutti gli elementi dal suo interno fino alla fine della stringa che è la lunghezza del testo. Quindi se sottraggo adalla lunghezza della stringa che mi darà la stringa con i acaratteri rimossi.
Quindi non funziona solo per 3, funziona per tutti i numeri interi positivi, tranne se la lunghezza della stringa è minore o uguale a a, in tal caso restituirà un numero negativo o 0.