Авторизация

Логин: Пароль:
Регистрация Забыли свой пароль?

Замещение КАПСА.

Страницы: 1
Замещение КАПСА., КАПС => капс
Появилась такая вот задачка: дана строка, если она написана капсом, то заменить его на маленькие буквы. Причем большая буква в начале предложения должна остаться. Существует ли способ сделать это максимально быстро? "Вручную" перебирать буковки ой как не хочется...
UPD:
Возможно стоит испольовать регулярные выражения?
Изменено: rozpants - 08.06.2010 11:26:24
А если это сделать при помощи функций UpperCase(Str: String) и LowerCase(Str: String)smile;)
Вот примерно так:
Код
var
 s:string;
begin
 s:='AaBBCcDd';
 s:=UpperCase(Copy(s, 1, 1)) + LowerCase(Copy(s, 2, Length(s)));
 Edit1.Text:=s;
end;


Результат: Aabbccdd
Изменено: Valera - 08.06.2010 12:46:10
*краснеет* Я совсем забыл про эти функции и занимался перекладыванием байтиков! smile:( Спасибо, Valera
Цитата
Спасибо, Valera

Незачто smile8)
Всегда рад помочь, обращайтесь если что;)
Копирование здесь будет лишним. Быстрее будет с помощью модуля AcedStrings из пакета AcedUtils.
Код
S:= G_ToLower(S);
if S<>'' then
  S[1]:= G_CharToUpper(S[1]);
Цитата
AcedUtils

Честно говоря, про такой пакет не знал smile:|
Офигенная штука - раньше был просто QStrings - тоже хвалили.

Ещё бы автору от SysUtils избавиться, можно было бы уменьшить код и ускорить работу. Как-то пробовал начать, но работу остановить на полдороги smile:)
Вообще часто встречается такое (и в других языках тоже), что встроенные функции для работы со строками не самые быстрые. И выходом могут быть готовые классы, сделанные уже кем-то. Например, часто конкатенация встроенная неэффективна по быстродействию.
Accende lumen sensibus, infude ainorem corbidus!
Страницы: 1
Читают тему (гостей: 1, пользователей: 0, из них скрытых: 0)