Я хочу видалити останні три символи з рядка:
string myString = "abcdxxx";
Зауважте, що рядок - це динамічні дані.
Я хочу видалити останні три символи з рядка:
string myString = "abcdxxx";
Зауважте, що рядок - це динамічні дані.
Відповіді:
прочитати останні 3 символи з рядка [Спочатку задане питання]
Ви можете використовувати string.Substring і дати йому початковий індекс, і він отримає підрядку, починаючи з даного індексу до кінця.
myString.Substring(myString.Length-3)
Отримує підрядку з цього примірника. Підрядка починається із заданої позиції символу. MSDN
Редагувати , для оновленої публікації
Видалити останні три символи з рядка [Оновлено запитання]
Для видалення останніх трьох символів з рядка ви можете використовувати string.Substring (Int32, Int32) і надати йому початковий індекс 0і кінцевий індекс на три менше, ніж довжина рядка . Він отримає підрядку перед трьома останніми символами.
myString = myString.Substring(0, myString.Length-3);
Метод String.Substring (Int32, Int32)
Отримує підрядку з цього примірника. Підрядка починається з визначеної позиції символу і має задану довжину.
Ви також можете скористатися методом String.Remove (Int32) для видалення останніх трьох символів, передавши стартовий індекс у довжину - 3 , він видалить з цієї точки до кінця рядка.
myString = myString.Remove(myString.Length-3)
Повертає новий рядок, у якому всі символи в поточному екземплярі, починаючи з вказаної позиції та продовжуючи до останньої позиції, були видалені
Я перечитав усе це, але хотів чогось більш елегантного. Просто для видалення певної кількості символів з кінця рядка:
string.Concat("hello".Reverse().Skip(3).Reverse());
вихід:
"he"
Enumerable.Reverseбуферизація рядка в a char[], потім буферизація в нову, char[]яка на 3 коротше, а потім генерує нову string(з внутрішньо іншою char[]). Кращим підходом буде new string("hello".Reverse().Skip(3))або просто написання власної функції розширення рядків, AllBut(this string in, int i)яка використовує Substring.
Lengthзберігається.
.SkipLast(n). Не потрібно нічого перевертати. "hello".SkipLast(3)дарує"he"
myString.Remove(myString.Length-3);
myString = myString.Remove(myString.Length - 3)це є.
string test = "abcdxxx";
test = test.Remove(test.Length - 3);
//output : abcd
Ви можете використовувати String.Removeдля видалення з заданої позиції до кінця рядка.
myString = myString.Remove(myString.Length - 3);
Напевно, не зовсім те, що ви шукаєте, оскільки ви кажете, що це "динамічні дані", але, враховуючи ваш приклад рядка, це також працює:
? "abcdxxx".TrimEnd('x');
"abc"
myString.Substring(myString.Length - 3, 3)
Ось приклади на підрядку. >>
http://www.dotnetperls.com/substring
Посилайтеся на ці.
Видаліть останні символи з рядка
TXTB_DateofReiumbursement.Text = (gvFinance.SelectedRow.FindControl("lblDate_of_Reimbursement") as Label).Text.Remove(10)
.Text.Remove(10)// використовується для видалення тексту, починаючи від індексу 10 до кінця
Легко. text = text.remove(text.length - 3). Я відняв 3, оскільки Removeфункція видаляє всі елементи з цього індексу до кінця рядка, який є text.length. Тож якщо я віднімаю 3, то я отримую з нього рядок із 3 символами.
Ви можете узагальнювати це видалення aсимволів з кінця рядка, як це:
text = text.remove(text.length - a)
Тож, що я робив, була та сама логіка. removeОпцію, щоб видалити всі елементи з його внутрішньої частини до кінця рядка , яка є довжиною тексту. Тож якщо я віднімаю aвід довжини рядка, який дасть мені рядок із aвилученими символами.
Таким чином, це не просто працює для 3, воно працює для всіх натуральних чисел, за винятком випадків, якщо довжина рядка менше або дорівнює a, у такому випадку він поверне від’ємне число або 0.