Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 30.08.2012, 19:01   #1
artemavd
Старожил
 
Аватар для artemavd
 
Регистрация: 05.06.2008
Сообщений: 4,206
Вопрос Как заменить последний символ в строке?

Добрый вечер! Мне нужно заменить самый последний символ в строке. Понимаю и сам, что вопрос вообщем-то простецкий, вертится в голове, но не могу пока поймать решение.
Как бы нужно узнать сначала длину всей строки, потом через +1 заменить последний символ, т.е. как-то так:
Код:
  l:=Length(Form1.sEdit4.Text) + 1; //получаю длину строки
  Form1.sEdit4.Text:=StringReplace(Form1.sEdit4.Text,Form1.sEdit4.Text[l],'',[]); //меняю последний самый символ в этой строке
Но данный код ничего не меняте. Длина строки заранее неизвестна и может быть любой. Подскажите где неправильно делаю?
Не стоит смеяться над человеком делающим шаг назад, возможно он делает разбег.
artemavd вне форума Ответить с цитированием
Старый 30.08.2012, 19:05   #2
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Так например (при условии, что не пустой s)
Код:
s:=Copy(s,1,Length(s)-1)+'a';
или
Код:
s[Length(s)]:='в';
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию

Последний раз редактировалось Аватар; 30.08.2012 в 19:08.
Аватар вне форума Ответить с цитированием
Старый 30.08.2012, 19:08   #3
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

Код:
s:=Edit1.Text;
if (Length(s)<>0) then s[Length(s)]:='a';
Edit1.Text:=s;
устроили тут...
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 30.08.2012, 19:09   #4
_-Re@l-_
C++, Java
Старожил
 
Аватар для _-Re@l-_
 
Регистрация: 10.04.2010
Сообщений: 2,665
По умолчанию

Ну типа
Код:
s := Edit1.Text;
s[length(s)] := 'a';
Edit1.Text := s;
_-Re@l-_ вне форума Ответить с цитированием
Старый 31.08.2012, 17:31   #5
artemavd
Старожил
 
Аватар для artemavd
 
Регистрация: 05.06.2008
Сообщений: 4,206
По умолчанию

Ребят, вы хоть сами пробовали свои варианты? Или просто так написали? Ни один из вариантов не сработал. Не ясен смысл логики ни одного их предложенных вариантов.
Не стоит смеяться над человеком делающим шаг назад, возможно он делает разбег.
artemavd вне форума Ответить с цитированием
Старый 31.08.2012, 17:50   #6
_-Re@l-_
C++, Java
Старожил
 
Аватар для _-Re@l-_
 
Регистрация: 10.04.2010
Сообщений: 2,665
По умолчанию

artemavd, у меня всё работает. Я бросил Edit на форму, и кнопку, и в событие нажатия кнопки выполнял эти действия. Всё работало.

P.S. Мой код небезопасен, в том смысле что он не проверяет длину строки, а вдруг строка пустая.
Вложения
Тип файла: rar Новая папка.rar (161.3 Кб, 20 просмотров)

Последний раз редактировалось _-Re@l-_; 31.08.2012 в 17:53.
_-Re@l-_ вне форума Ответить с цитированием
Старый 31.08.2012, 18:00   #7
artemavd
Старожил
 
Аватар для artemavd
 
Регистрация: 05.06.2008
Сообщений: 4,206
По умолчанию

_-Re@l-_, да, вот сейчас вижу, что твой код работает). Спасибо. Буду применять его и расширять под свою задачу.
Не понятно почему не работает код с моей строкой. У меня символ, который мне надо удалить (это символ "," без кавычек), несколько раз встречается у меня в строке.
Например, код в приложенном примере строку "Текст,текст," преобразует в "Текст,текст" - то, что нужно. А если строка имеется строка вида ":1,:2,:3," то последняя запятая не убирается. Видимо путаница получается с предыдущими запятыми, которые встречаются в самой строке ранее. Как исправить?
Не стоит смеяться над человеком делающим шаг назад, возможно он делает разбег.

Последний раз редактировалось artemavd; 31.08.2012 в 18:19.
artemavd вне форума Ответить с цитированием
Старый 31.08.2012, 19:45   #8
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

Цитата:
Сообщение от artemavd Посмотреть сообщение
_-Re@l-_, да, вот сейчас вижу, что твой код работает). Спасибо. Буду применять его и расширять под свою задачу.
Не понятно почему не работает код с моей строкой. У меня символ, который мне надо удалить (это символ "," без кавычек), несколько раз встречается у меня в строке.
Например, код в приложенном примере строку "Текст,текст," преобразует в "Текст,текст" - то, что нужно. А если строка имеется строка вида ":1,:2,:3," то последняя запятая не убирается. Видимо путаница получается с предыдущими запятыми, которые встречаются в самой строке ранее. Как исправить?
Код:
s:=Trim(Edit.Text);
if((Length(s)>0)and(s[Length(s)=','))then s:=Copy(s,1,Length(s)-1);
Edit.Text:=s;
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 31.08.2012, 20:01   #9
artemavd
Старожил
 
Аватар для artemavd
 
Регистрация: 05.06.2008
Сообщений: 4,206
По умолчанию

Пепел Феникса, спасибо! Сейчас вроде работает как надо
Не стоит смеяться над человеком делающим шаг назад, возможно он делает разбег.
artemavd вне форума Ответить с цитированием
Старый 31.08.2012, 20:06   #10
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

на будущее, будь ласка, говори что надо удалять символ, а не заменять его, ибо это разное.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
первый и последний символ в строке AndreyF Общие вопросы Delphi 10 03.08.2016 12:09
Заменить в строке один символ на другой (assembler) fuzo Помощь студентам 1 06.05.2013 12:11
Assembler!!! Заменить на символ ‘!’ каждый 3тий символ в строке. Leon9313 Помощь студентам 0 24.04.2012 13:02
Как обрезать последний символ в слове? MeTeOpA C# (си шарп) 12 16.10.2011 23:23
заменить символ в строке felmor Паскаль, Turbo Pascal, PascalABC.NET 1 25.12.2008 18:38