Chcę usunąć ostatnie trzy znaki z ciągu:
string myString = "abcdxxx";
Zwróć uwagę, że ciąg to dane dynamiczne.
Chcę usunąć ostatnie trzy znaki z ciągu:
string myString = "abcdxxx";
Zwróć uwagę, że ciąg to dane dynamiczne.
Odpowiedzi:
przeczytaj ostatnie 3 znaki z ciągu [początkowo zadane pytanie]
Możesz użyć string.Substring i nadać mu indeks początkowy, a otrzyma podłańcuch zaczynający się od podanego indeksu do końca.
myString.Substring(myString.Length-3)
Pobiera podciąg z tego wystąpienia. Podciąg zaczyna się od określonej pozycji znaku. MSDN
Edytuj , aby zaktualizować post
Usuń ostatnie 3 znaki z ciągu [zaktualizowane pytanie]
Aby usunąć ostatnie trzy znaki z ciągu, możesz użyć string.Substring (Int32, Int32) i nadać mu indeks początkowy 0i końcowy o trzy mniejszy niż długość ciągu . Otrzyma podciąg przed trzema ostatnimi znakami.
myString = myString.Substring(0, myString.Length-3);
Metoda String.Substring (Int32, Int32)
Pobiera podciąg z tego wystąpienia. Podciąg zaczyna się w określonej pozycji znaku i ma określoną długość.
Możesz również użyć metody String.Remove (Int32) , aby usunąć ostatnie trzy znaki, przekazując indeks początkowy jako długość - 3 , spowoduje to usunięcie od tego punktu do końca ciągu.
myString = myString.Remove(myString.Length-3)
Zwraca nowy ciąg, w którym wszystkie znaki w bieżącej instancji, rozpoczynające się na określonej pozycji i kontynuujące do ostatniej pozycji, zostały usunięte
Przeczytałem to wszystko, ale chciałem czegoś bardziej eleganckiego. Wystarczy usunąć określoną liczbę znaków z końca ciągu:
string.Concat("hello".Reverse().Skip(3).Reverse());
wynik:
"he"
Enumerable.Reversebuforuje ciąg w a char[], a następnie buforuje w nowy, char[]który jest o 3 krótszy, a następnie generuje nowy string(z wewnętrznie innym char[]). Lepszym podejściem byłoby new string("hello".Reverse().Skip(3))napisanie własnej funkcji rozszerzającej ciąg, AllBut(this string in, int i)która używa Substring.
Lengthprzechowywany.
.SkipLast(n). Nie ma potrzeby niczego odwracać. "hello".SkipLast(3)daje"he"
myString.Remove(myString.Length-3);
myString = myString.Remove(myString.Length - 3)to jest.
string test = "abcdxxx";
test = test.Remove(test.Length - 3);
//output : abcd
Możesz użyć String.Removedo usunięcia od określonej pozycji do końca ciągu.
myString = myString.Remove(myString.Length - 3);
Prawdopodobnie nie jest to dokładnie to, czego szukasz, ponieważ mówisz, że to „dane dynamiczne”, ale biorąc pod uwagę przykładowy ciąg, to również działa:
? "abcdxxx".TrimEnd('x');
"abc"
myString.Substring(myString.Length - 3, 3)
Oto przykłady dotyczące podciągu. >>
http://www.dotnetperls.com/substring
Skorzystaj z tych.
Usuń ostatnie znaki z ciągu
TXTB_DateofReiumbursement.Text = (gvFinance.SelectedRow.FindControl("lblDate_of_Reimbursement") as Label).Text.Remove(10)
.Text.Remove(10)// służy do usuwania tekstu zaczynającego się od indeksu 10 do końca
Łatwo. text = text.remove(text.length - 3). Odjąłem 3, ponieważ Removefunkcja usuwa wszystkie elementy z tego indeksu do końca ciągu, który jest text.length. Więc jeśli odejmę 3, otrzymam ciąg z usuniętymi z niego 3 znakami.
Możesz uogólnić to na usuwanie aznaków z końca ciągu, na przykład:
text = text.remove(text.length - a)
Więc to, co zrobiłem, było tą samą logiką. removeFunkcja usuwa wszystkie elementy z jego wnętrza na końcu łańcucha, który jest długością tekstu. Więc jeśli odeję aod długości ciągu, który da mi ciąg z ausuniętymi znakami.
Więc to nie działa tylko dla 3, działa dla wszystkich dodatnich liczb całkowitych, z wyjątkiem przypadku, gdy długość łańcucha jest mniejsza lub równa a, w takim przypadku zwróci liczbę ujemną lub 0.