Форум программистов
 
О проблемах с регистрацией пишите сюда - alarforum@yandex.ru, проверяйте папку спам! Обязательно пройдите активизацию e-mail, а тут можно восстановить пароль.

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

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


Ответ
 
Опции темы
Старый 25.01.2013, 13:54   #1
danil123
Пользователь
 
Регистрация: 06.07.2012
Сообщений: 80
По умолчанию сдвинуть символы в строке

как из строки xyz сделать строку yza, т.е. сдвинуть все символы на 1?
danil123 вне форума Ответить с цитированием
Старый 25.01.2013, 14:24   #2
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,260
По умолчанию

из строки "XYZ" нельзя получить строку "YZA", можно "YZX".
если так и нужно, то:
Цитата:
s := Copy(s,2,Length(s)-1) + Copy(s,1,1);
Serge_Bliznykov вне форума Ответить с цитированием
Старый 25.01.2013, 14:31   #3
danil123
Пользователь
 
Регистрация: 06.07.2012
Сообщений: 80
По умолчанию

Цитата:
Сообщение от Serge_Bliznykov Посмотреть сообщение
из строки "XYZ" нельзя получить строку "YZA", можно "YZX".
если так и нужно, то:
Я не о том, нужно заменить каждый символ на следующий за ним по алфавиту и учесть, что после z будет a, т.е. алфавит цикличен
danil123 вне форума Ответить с цитированием
Старый 25.01.2013, 14:45   #4
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 19,061
По умолчанию

Д7. Для кириллицы так не пойдёт - символы не подряд
Код:
procedure TForm1.Button1Click(Sender: TObject);
const cAlpfaU = ['A'..'Z'];
      cAlpfaL = ['a'..'z'];
var s: string;
    i: Integer;
    c: Char;
begin
  s:=Edit1.Text;
  for i:=1 to Length(s) do
    if s[i] in cAlpfaU then begin
      c:=Chr(Ord(s[i])+1);
      if c in cAlpfaU then s[i]:=c else s[i]:='A';
    end
    else if s[i] in cAlpfaL then begin
      c:=Chr(Ord(s[i])+1);
      if c in cAlpfaL then s[i]:=c else s[i]:='a';
    end;
  Edit1.Text:=s;
end;
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 25.01.2013, 14:49   #5
danil123
Пользователь
 
Регистрация: 06.07.2012
Сообщений: 80
По умолчанию

Цитата:
Сообщение от Аватар Посмотреть сообщение
Д7. Для кириллицы так не пойдёт - символы не подряд
Код:
procedure TForm1.Button1Click(Sender: TObject);
const cAlpfaU = ['A'..'Z'];
      cAlpfaL = ['a'..'z'];
var s: string;
    i: Integer;
    c: Char;
begin
  s:=Edit1.Text;
  for i:=1 to Length(s) do
    if s[i] in cAlpfaU then begin
      c:=Chr(Ord(s[i])+1);
      if c in cAlpfaU then s[i]:=c else s[i]:='A';
    end
    else if s[i] in cAlpfaL then begin
      c:=Chr(Ord(s[i])+1);
      if c in cAlpfaL then s[i]:=c else s[i]:='a';
    end;
  Edit1.Text:=s;
end;
Спс, работает
danil123 вне форума Ответить с цитированием
Ответ
Купить рекламу на форуме 20000 рублей в месяц
Опции темы


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Символы в строке. Predator199 PHP 1 21.10.2012 13:42
ограничить символы в строке richedit s1s1s1 Общие вопросы Delphi 0 07.06.2011 20:38
Символы в строке загнать в переменные cheef Общие вопросы Delphi 5 26.06.2010 15:49
убрать null (нуль) символы в строке Kib Общие вопросы Delphi 7 25.06.2010 13:22


Проекты отопления, пеллетные котлы, бойлеры, радиаторы
интернет магазин respective.ru
Пеллетный котёл Emtas
котлы EMTAS