Как удалить последний символ в textbox c
Перейти к содержимому

Как удалить последний символ в textbox c

  • автор:

C — удаление первого и последнего символа в строке

Как удалить первый и последний символ строки? С первым символом я вроде разобрался, а вот с последним выдает ошибку:

Thread 1: EXC_BAD_ACCESS (code=2, address=0x100003fb0)

#include #include #include int main (void) < char *text = "Something"; printf("%s\n",text); // Удаление первого символа: char * text_change1 = text + 1; printf("%s\n",text_change1); // Удаление последнего символа: text_change1[strlen(text_change1) - 1] = 0; printf("%s\n", text_change1); return 0; >

Отслеживать
68k 221 221 золотой знак 79 79 серебряных знаков 221 221 бронзовый знак
задан 16 дек 2022 в 9:16
13 4 4 бронзовых знака
а зачем вы удаляете предыдущий точно такой же вопрос, если вам ответили ?
16 дек 2022 в 9:35

1 ответ 1

Сортировка: Сброс на вариант по умолчанию

Ну, по-хорошему, вы не удалили первый, а просто сдвинули указатель. А вот второй начали удалять, но откуда? Из строкового литерала. А это вещь такая, что ее менять никак нельзя.

int main () < char text[] = "Something"; // А вот так — меняйте на здоровье! printf("%s\n",text); // Удаление первого символа: memmove(text,text+1,strlen(text)); // Удаление последнего символа: text[strlen(text) - 1] = 0; printf("%s\n", text); >

Отслеживать
ответ дан 16 дек 2022 в 9:20
219k 15 15 золотых знаков 120 120 серебряных знаков 230 230 бронзовых знаков

В C тоже менять строковые литералы — неопределённое поведение. Даже несмотря на то что они имеют тип char * .

Как удалить последний введенный пользователем символ (программная реализация backspace)?

Нажатием кнопки нужно удалить последний введенный пользователем символ (аналог backspace). На данный момент не могу разобраться с принципом работы.
Пытался сделать через maskedTextBox1.Text.Length, но в этом случае показывается общая длинна маски, а не количество введенных пользователем символов.
Пытался сделать через while, где сравнивал в цикле символы с конца, и если, символ не был равен цифре, то считал, что это символ маски. Тоже не вышло. Хотя возможно я неверно задал условия цикла или проверки символа.

Жду любых советов или мнений, как это можно сделать.

  • Вопрос задан более трёх лет назад
  • 195 просмотров

Как удалить последний символ из текстового поля?

Я пытаюсь написать копию калькулятора MS Windows — просто для использования знаний, которые я получил в ходе курса, и у меня возникают проблемы с написанием ключа Backspace , но я не имею понятия о том, как удалить последний символ в TxtResult.Text (Text Box). Так что, может кто-то научить меня, как это сделать?

using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Windows.Forms; namespace ZigndSuperCalc < public partial class FrmZigndSC : Form < Int64 aux, result; Int16 cont = 0; bool sucess; public FrmZigndSC() < InitializeComponent(); >private void BtnSoma_Click(object sender, EventArgs e) < sucess = Int64.TryParse(TxtInput.Text, out aux); result += aux; TxtInput.Text = Convert.ToString(result); TxtInput.Focus(); >private void BtnCE_Click(object sender, EventArgs e) < TxtInput.Text = "0"; >private void BtnC_Click(object sender, EventArgs e) < result = 0; TxtInput.Text = "0"; >private void BtnBackspace_Click(object sender, EventArgs e) < // write here a method to delete the last character from >> > 

Поделиться Источник 13 сентября 2012 в 00:39

8 ответов

Если мы имитируем calc.exe , то, вероятно, это что-то вроде:

string s = TxtResult.Text; if (s.Length > 1) < s = s.Substring(0, s.Length - 1); >else < s = "0"; >TxtResult.Text = s; 

РЕДАКТИРОВАТЬ: Как запрошено, метод Substring , который я использую здесь, извлекает часть строки и присваивает ее свойству Text текстового ящика. См.: http://msdn.microsoft.com/en-us/library/aka44szs.aspx

Поделиться 13 сентября 2012 в 00:47

if (textBox1.TextLength > 0) < textBox1.Text = textBox1.Text.Substring(0, (textBox1.TextLength - 1)); >else

Как удалить последний символ в textbox c

Конкатенация строк или объединение может производиться как с помощью операции + , так и с помощью метода Concat :

string s1 = "hello"; string s2 = "world"; string s3 = s1 + " " + s2; // результат: строка "hello world" string s4 = string.Concat(s3, ". "); // результат: строка "hello world. " Console.WriteLine(s4);

Метод Concat является статическим методом класса string, принимающим в качестве параметров две строки. Также имеются другие версии метода, принимающие другое количество параметров.

Для объединения строк также может использоваться метод Join :

string s5 = "apple"; string s6 = "a day"; string s7 = "keeps"; string s8 = "a doctor"; string s9 = "away"; string[] values = new string[] < s5, s6, s7, s8, s9 >; string s10 = string.Join(" ", values); Console.WriteLine(s10); // apple a day keeps a doctor away

Метод Join также является статическим. Использованная выше версия метода получает два параметра: строку-разделитель (в данном случае пробел) и массив строк, которые будут соединяться и разделяться разделителем.

Сравнение строк

Для сравнения строк применяется статический метод Compare :

string s1 = "hello"; string s2 = "world"; int result = string.Compare(s1, s2); if (result <0) < Console.WriteLine("Строка s1 перед строкой s2"); >else if (result > 0) < Console.WriteLine("Строка s1 стоит после строки s2"); >else < Console.WriteLine("Строки s1 и s2 идентичны"); >// результатом будет "Строка s1 перед строкой s2"

Данная версия метода Compare принимает две строки и возвращает число. Если первая строка по алфавиту стоит выше второй, то возвращается число меньше нуля. В противном случае возвращается число больше нуля. И третий случай — если строки равны, то возвращается число 0.

В данном случае так как символ h по алфавиту стоит выше символа w, то и первая строка будет стоять выше.

Поиск в строке

С помощью метода IndexOf мы можем определить индекс первого вхождения отдельного символа или подстроки в строке:

string s1 = "hello world"; char ch = 'o'; int indexOfChar = s1.IndexOf(ch); // равно 4 Console.WriteLine(indexOfChar); string substring = "wor"; int indexOfSubstring = s1.IndexOf(substring); // равно 6 Console.WriteLine(indexOfSubstring);

Подобным образом действует метод LastIndexOf , только находит индекс последнего вхождения символа или подстроки в строку.

Еще одна группа методов позволяет узнать начинается или заканчивается ли строка на определенную подстроку. Для этого предназначены методы StartsWith и EndsWith . Например, в массиве строк хранится список файлов, и нам надо вывести все файлы с расширением exe:

var files = new string[] < "myapp.exe", "forest.jpg", "main.exe", "book.pdf", "river.png" >; for (int i = 0; i

Разделение строк

С помощью функции Split мы можем разделить строку на массив подстрок. В качестве параметра функция Split принимает массив символов или строк, которые и будут служить разделителями. Например, подсчитаем количество слов в сроке, разделив ее по пробельным символам:

string text = «И поэтому все так произошло»; string[] words = text.Split(new char[] < ' ' >); foreach (string s in words)

Это не лучший способ разделения по пробелам, так как во входной строке у нас могло бы быть несколько подряд идущих пробелов и в итоговый массив также бы попадали пробелы, поэтому лучше использовать другую версию метода:

string[] words = text.Split(new char[] < ' ' >, StringSplitOptions.RemoveEmptyEntries);

Второй параметр StringSplitOptions.RemoveEmptyEntries говорит, что надо удалить все пустые подстроки.

Обрезка строки

Для обрезки начальных или концевых символов используется функция Trim :

string text = " hello world "; text = text.Trim(); // результат "hello world" text = text.Trim(new char[] < 'd', 'h' >); // результат "ello worl"

Функция Trim без параметров обрезает начальные и конечные пробелы и возвращает обрезанную строку. Чтобы явным образом указать, какие начальные и конечные символы следует обрезать, мы можем передать в функцию массив этих символов.

Эта функция имеет частичные аналоги: функция TrimStart обрезает начальные символы, а функция TrimEnd обрезает конечные символы.

Обрезать определенную часть строки позволяет функция Substring :

string text = "Хороший день"; // обрезаем начиная с третьего символа text = text.Substring(2); // результат "роший день" Console.WriteLine(text); // обрезаем сначала до последних двух символов text = text.Substring(0, text.Length - 2); // результат "роший де" Console.WriteLine(text);

Функция Substring также возвращает обрезанную строку. В качестве параметра первая использованная версия применяет индекс, начиная с которого надо обрезать строку. Вторая версия применяет два параметра — индекс начала обрезки и длину вырезаемой части строки.

Вставка

Для вставки одной строки в другую применяется функция Insert :

string text = "Хороший день"; string substring = "замечательный "; text = text.Insert(8, substring); Console.WriteLine(text); // Хороший замечательный день

Первым параметром в функции Insert является индекс, по которому надо вставлять подстроку, а второй параметр — собственно подстрока.

Удаление строк

Удалить часть строки помогает метод Remove :

string text = "Хороший день"; // индекс последнего символа int ind = text.Length - 1; // вырезаем последний символ text = text.Remove(ind); Console.WriteLine(text); // Хороший ден // вырезаем первые два символа text = text.Remove(0, 2); Console.WriteLine(text); // роший ден

Первая версия метода Remove принимает индекс в строке, начиная с которого надо удалить все символы. Вторая версия принимает еще один параметр — сколько символов надо удалить.

Замена

Чтобы заменить один символ или подстроку на другую, применяется метод Replace :

string text = "хороший день"; text = text.Replace("хороший", "плохой"); Console.WriteLine(text); // плохой день text = text.Replace("о", ""); Console.WriteLine(text); // плхй день

Во втором случае применения функции Replace строка из одного символа «о» заменяется на пустую строку, то есть фактически удаляется из текста. Подобным способом легко удалять какой-то определенный текст в строках.

Смена регистра

Для приведения строки к верхнему и нижнему регистру используются соответственно функции ToUpper() и ToLower() :

string hello = "Hello world!"; Console.WriteLine(hello.ToLower()); // hello world! Console.WriteLine(hello.ToUpper()); // HELLO WORLD!

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *