|
Вопрос # 4 884/ вопрос решён / |
|
Здравствуйте, уважаемые эксперты! Как сделать поиск по тексту чтобы при этом не учитывался регистр букв?
 |
Вопрос задал: eclipse (статус: Посетитель)
Вопрос отправлен: 5 января 2011, 15:22
Состояние вопроса: решён, ответов: 1.
|
Ответ #1. Отвечает эксперт: min@y™
Ну, для начала, ищешь:
function PosIgnoreCase(const Substr, S: string): Integer;
begin
Result:= Pos(UpperCase(Substr), UpperCase(S));
end;
Затем копируешь функцией Copy(), где индекс - результат функции PosIgnoreCase(). Написать, как ею пользоваться, или сам знаешь?
 |
Ответ отправил: min@y™ (статус: Доктор наук)
Время отправки: 5 января 2011, 16:33
Оценка за ответ: 5
Комментарий к оценке: я так и знал
|
Мини-форум вопроса
Всего сообщений: 8; последнее сообщение — 5 января 2011, 19:17; участников в обсуждении: 3.
|
Ерёмин А.А. (статус: *Администратор), 5 января 2011, 15:28 [#1]:
Привести обе строки к одному регистру и потом искать.
|
|
eclipse (статус: Посетитель), 5 января 2011, 15:31 [#2]:
Блин немного не так задал вопрос... Как перевести то я знаю UpperCase() или LowerCase() ... а вот как найти в тексте нужную строку и скопировать без изменения регистра букв?
|
|
eclipse (статус: Посетитель), 5 января 2011, 16:52 [#3]:
Я примерно так и предполагал, но думал мож есть какая функция.
|
5 января 2011, 16:53: Статус вопроса изменён на решённый (изменил автор вопроса — eclipse): решён
5 января 2011, 17:07: Вопрос перемещён из тематического раздела Delphi » Общие вопросы по программированию в раздел Delphi » Алгоритмы, преобразования модератором Ерёмин А.А.
|
eclipse (статус: Посетитель), 5 января 2011, 18:17 [#4]:
В бщем немного поколдовал и вот так получилось:
procedure TForm1.CopyCase(NeededString, OldString, SearchString: string);
var ss, ss2, ss3: string;
i, x, positia, positia2: Integer;
function IsLowerCase(Ch: Char): boolean;
begin
Result:=Ch=AnsiLowerCase(Ch);
end;
begin
ss:= SearchString;
ss2:= Copy(ss, Pos(OldString, LowerCase(ss)), Length(OldString));
if Length(NeededString) <> Length(OldString) then
ss2:= Copy(ss2, 0, Length(ss2) - Length(NeededString));
ss3:= NeededString;
ShowMessage(ss2);
for x:=0 to Length(ss2) do
if IsLowerCase(ss2[x]) then
ss3[x]:=ansilowerCase(ss3[x])[1]
else
ss3[x]:=ansiUpperCase(ss3[x])[1];
ShowMessage(ss3);
ss:= Copy(ss, 0, Pos(OldString, LowerCase(ss))-1) + ss3 + Copy(ss, Pos(OldString, LowerCase(ss)) + 10, MaxInt);
ShowMessage(ss);
end;
Ну тут, как говорится, тока приготовилось... есть лишние моменты.
|
|
min@y™ (статус: Доктор наук), 5 января 2011, 18:55 [#5]:
Ёпрст! Ды шо ж вы все лепите код без форматирования, а??!!11 Ну вот как его читать?! Шож за матьтвою?
Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп!
|
|
min@y™ (статус: Доктор наук), 5 января 2011, 18:58 [#6]:
Особенно прикалывают индивиды, вываливающие целые полотенца кода без форматирования и (тем более) комментариев с просьбой найти ошибку. ЩАС!!! ЩАС ВСЁ БРОШУ И БУДУ РАСШИФРОВЫВАТЬ! Ога...
Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп!
|
|
eclipse (статус: Посетитель), 5 января 2011, 19:06 [#7]:
ЫЫЫЫЫЫ Да ладно ты min@y! я так... чисто то что получилось метолом тыка кинул... написал же... а потом всё приведу в человеческий вид.
|
|
min@y™ (статус: Доктор наук), 5 января 2011, 19:17 [#8]:
Вот приведи сначала в Ч.В., а потом вываливай.
И не надо коверкать мой ник!
Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп!
|
Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте.
|