![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Изменение регистра символов
Do№ © (2002-01-24 19:27:00)Подскажите плз как поменять регистр символов в символьной переменной :
ааааанадо заменить на ААА
делфи командой UpperCase почемуто конвертирует тока английские символы в строке
Anatoly Podgoretsky (2002-01-26 21:50:00) [1]Do№ (24.01.02 19:27)
Надеюсь вопрос то ты правильно задал? Тогда
for I := 1 to Length[S] do
if S[I] = "a" then S[I] := "A";
Ну а если универсально, то с помощью таблицы преобразований, для локализированных систем можно использовать AnsiUpperCase
Chris (2002-01-25 08:27:00) [2]Точно, а изучение английского языка избавляет нас от форумов и приковывает наше внимание к кнопке F1. ;-)
Chris (2002-01-24 19:50:00) [3]Согласен.
Так выглядит короче:
function TUCStr.DownCase(Str: string): string;
var i: integer;
begin
Result:=Str;
for i:=1 to length(Str) do
if pos(Str[i],FUpChar)>0 then
Result[i]:=FDnChar[pos(Str[i],FUpChar)];
end;
function TUCStr.UpCase(Str: string): string;
var i: integer;
begin
Result:=Str;
for i:=1 to length(Str) do
if pos(Str[i],FDnChar)>0 then
Result[i]:=FUpChar[pos(Str[i],FDnChar)];
end;
Юрий Зотов (2002-01-24 19:50:00) [4]Все замечательно, но простой вызов AnsiUpperCase избавляет от необходимости изобретать велосипеды.
А чтение справки по UpperCase избавляет от необходимости задавать вопросы и дожидаться ответов с этими велосипедами.
Tosov (2002-01-24 19:43:00) [5]Chris
А не проще ли было заменять символы строки str[num] - имхо Delete и Copy это по ресурсам накладнее по сравнению с этим.
Chris (2002-01-24 19:34:00) [6]Я использую свою процедуру:
const
FUpChar:="ABCDEFGHIJKLMNOPQRSTUVWXYZАБВГДЕЁЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯ";
FDnChar:="abcdefghijklmnopqrstuvwxyzабвгдеёжзийклмнопрстуфхцчшщъыьэюя";
function DownCase(Str: string): string;
begin
Result:="";
While Str<>"" do
begin
if pos(copy(Str,1,1),FUpChar)>0 then
Result:=Result+copy(FDnChar,pos(copy(Str,1,1),FUpChar),1)
else
Result:=Result+copy(Str,1,1);
Delete(Str,1,1);
end;
end;
function UpCase(Str: string): string;
begin
Result:="";
While Str<>"" do
begin
if pos(copy(Str,1,1),FDnChar)>0 then
Result:=Result+copy(FUpChar,pos(copy(Str,1,1),FDnChar),1)
else
Result:=Result+copy(Str,1,1);
Delete(Str,1,1);
end;
end;
Tosov (2002-01-24 19:30:00) [7]Попробуй CharUpper