Форум АНТИЧАТ

Форум АНТИЧАТ (https://forum.antichat.xyz/index.php)
-   С/С++, C#, Delphi, .NET, Asm (https://forum.antichat.xyz/forumdisplay.php?f=24)
-   -   удалить все русские буквы из текста. как? (https://forum.antichat.xyz/showthread.php?t=168858)

1n0y 07.01.2010 00:01

удалить все русские буквы из текста. как?
 
сабж. делфи. помогите пажалста :)

Gar|k 07.01.2010 00:39

вот примитивный алгоритм. (pascal не люблю)
тк строка это массив то определенную букву можно получить так str[5] - 5 буква... есть такая функция ord - получить ASCII код символа. выведи для начала ord('а') ord('Я') посмотри диапазон чисел потом
делаешь 2 строки одинакового размера
первая исходная - for ом по всем элементам if ord(str[i])<ord('а') then dest[k]=str[i];

типа если это не русская буква заносим символ в новую строку - в итоге в новой строке будут все встречающиеся не русские символы.

может можно и красивее реализовать ) хз

Faost 07.01.2010 01:25

Ну хоть бы и так:
Цитата:

var s: string;
i: integer;
c: char;
begin
s:= 'сstringяАiusaol';

for c:= 'А' to 'я' do
repeat
i:= pos(c, s);
if i <> 0 then
Delete(s, i, 1);
until i = 0;

ShowMessage(s);
end;

1n0y 07.01.2010 03:52

заюзал StringReplace, повторив 33 раза со всеми буквами :)
Цитата:

Memo1.Lines.Text := StringReplace(Memo1.Lines.Text,'а','',[rfReplaceAll, rfIgnoreCase]);
не очень красиво, но работает :)

Fata1ex 07.01.2010 14:25

I like the way you move!
Отличный выход :)

patcher 07.01.2010 17:53

Вот набросал:
Код:

procedure DeleteRus(text:string);
var c:char;
begin
for c:='А' to 'я' do
text:=StringReplace(text,с,'',[rfReplaceAll, rfIgnoreCase]);
end;

Пример:
Код:

var s:string;
begin
s:='хзчтоздgdfgsds36есь';
DeleteRus(s);
end;


1n0y 07.01.2010 18:03

patcher, спасибо :) жаль что в голову вчера такое не пришло

но менять наверное нечего небуду, ибо приделал опции с выбором символов, которые нужно удалять :)

http://imglink.ru/pictures/07-01-10/...6fa7d38a45.jpg

Linkus 07.01.2010 19:45

0_o те не лень было все эти чекбоксы ставить??

Fata1ex 07.01.2010 21:40

эээ на будущее - это решается одним текстовым полем, в которое юзер вбивает нужные символы для замены...
50 чекбоксов - это сильно. В мемы юзабилити!

1n0y 08.01.2010 00:14

Цитата:

Сообщение от Fata1ex
эээ на будущее - это решается одним текстовым полем, в которое юзер вбивает нужные символы для замены...
50 чекбоксов - это сильно. В мемы юзабилити!

да я с делфи знаком неделю буквально, что первое подруку попалось, то и поставил. притом задача была сделать прогу с кучей всяких ненужных настроек, да и вообще сымитировать бурную деятельность и гибкость программы :)

расскажите как сделать одно текстовое поле? :rolleyes:


Время: 02:45