Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Заменить некоторые русские буквы на похожие из английского в текс


webSQLNeederr ©   (2008-04-24 15:18:00) 

Есть текст, необходимо заменить некоторые буквы, скажем "с", "к", "о", "р" на латинские. Подскажите как это сделать.

Первое что приходит на ум это AnsireplaceText(text,'o','o');

Но я подозреваю здесь нужно через их ASCII код менять ... Подскажите верный вариант ...


Sha   (2008-04-29 13:45:00) [1]

пишем антиантиплагиат? ))


han_malign   (2008-04-24 17:13:00) [2]


> massiv [0..255] of char

- не вынесла душа поэта...

во - полная таблица simvolov в русской локали:
const
  win1251: array[char] of Char =
   ^@^A^B^C^D^E^F^G^H^I^J^K^L^M^N^O^P^Q^R^S^T^U^V^W^X^Y^Z^[^\^]^^^_+
   ' !"#$%&''()*+,-./0123456789:;?'+
   '@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_'+
   '`abcdefghijklmnopqrstuvwxyz{|}~'^?+
   ^А^Б^В^Г^Д^Е^Ж^З^И^Й^К^Л^М^Н^О^П^Р^С^Т^У^Ф^Х^Ц^Ч^Ш^Щ^Ъ^Ы^Ь^Э^Ю^Я+
   ^а^б^в^г^д^е^ж^з^и^й^к^л^м^н^о^п^р^с^т^у^ф^х^ц^ч^ш^щ^ъ^ы^ь^э^ю^я+
   'АБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯ'+
   'абвгдежзийклмнопрстуфхцчшщъыьэюя';


Игорь Шевченко   (2008-04-24 16:44:00) [3]


> s[i] := tablica[ord(s[i])];
> где tablica представляет собой таблицу замен и имеет тип
> array [0..255] of char


нихрена. tablica представляет собой таблицу замен и имеет тип massiv [0..255] of char


han_malign   (2008-04-24 15:54:00) [4]

const transcodWin1251ToLat: array[char] of char = (
#$00,#$01,#$02,#$03,#$04,#$05,#$06,#$07,#$08,#$09,#$0A,#$0B,#$0C,#$0D,#$0E,#$0F,
#$10,#$11,#$12,#$13,#$14,#$15,#$16,#$17,#$18,#$19,#$1A,#$1B,#$1C,#$1D,#$1E,#$1F,
#$20,#$21,#$22,#$23,#$24,#$25,#$26,#$27,#$28,#$29,#$2A,#$2B,#$2C,#$2D,#$2E,#$2F,
#$30,#$31,#$32,#$33,#$34,#$35,#$36,#$37,#$38,#$39,#$3A,#$3B,#$3C,#$3D,#$3E,#$3F,
#$40,#$41,#$42,#$43,#$44,#$45,#$46,#$47,#$48,#$49,#$4A,#$4B,#$4C,#$4D,#$4E,#$4F,
#$50,#$51,#$52,#$53,#$54,#$55,#$56,#$57,#$58,#$59,#$5A,#$5B,#$5C,#$5D,#$5E,#$5F,
#$60,#$61,#$62,#$63,#$64,#$65,#$66,#$67,#$68,#$69,#$6A,#$6B,#$6C,#$6D,#$6E,#$6F,
#$70,#$71,#$72,#$73,#$74,#$75,#$76,#$77,#$78,#$79,#$7A,#$7B,#$7C,#$7D,#$7E,#$7F,
#$80,#$81,#$82,#$83,#$84,#$85,#$86,#$87,#$88,#$89,#$8A,#$8B,#$8C,#$8D,#$8E,#$8F,  
#$90,#$91,#$92,#$93,#$94,#$95,#$96,#$97,#$98,#$99,#$9A,#$9B,#$9C,#$9D,#$9E,#$9F,
#$A0,#$A1,#$A2,#$A3,#$A4,#$A5,#$A6,#$A7, 'Ё',#$A9,#$AA,#$AB,#$AC,#$AD,#$AE,#$AF,
#$B0,#$B1,#$B2,#$B3,#$B4,#$B5,#$B6,#$B7, 'ё',#$B9,#$BA,#$BB,#$BC,#$BD,#$BE,#$BF,
 'А', 'Б', 'В', 'Г', 'Д', 'Е', 'Ж', 'З', 'И', 'Й', 'К', 'Л', 'М', 'Н', 'О', 'П',
 'Р', 'С', 'Т', 'У', 'Ф', 'Х', 'Ц', 'Ч', 'Ш', 'Щ', 'Ъ', 'Ы', 'Ь', 'Э', 'Ю', 'Я',
 'а', 'б', 'в', 'г', 'д', 'е', 'ж', 'з', 'и', 'й', 'к', 'л', 'м', 'н', 'о', 'п',
 'р', 'с', 'т', 'у', 'ф', 'х', 'ц', 'ч', 'ш', 'щ', 'ъ', 'ы', 'ь', 'э', 'ю',#$FF
);

меняем буковки на нужные и:
for i:= 1 to length(text) do text[i]:= transcodWin1251ToLat[text[i]];

и хоть в транслитерацию, хоть в Koi-8r, et cetera, et cetera, et cetera...


Сергей М.   (2008-04-24 15:50:00) [5]


> webSQLNeederr   (24.04.08 15:48) [6]


Это точно же настолько, насколько точно утверждение:

2 *2 = 1 * 4

)


palva   (2008-04-24 15:49:00) [6]

Букв много, поэтому расточительно пользоваться функциями типа Replace. Для каждой буквы текст будет просматриваться снова и снова. Лучше просматривать строку один раз, а каждый символ заменять по правилу:
s[i] := tablica[ord(s[i])];
где tablica представляет собой таблицу замен и имеет тип array [0..255] of char


webSQLNeederr   (2008-04-24 15:48:00) [7]

Я повторяю вопрос - ЭТО ТОЧНО???


webSQLNeederr   (2008-04-24 15:45:00) [8]


> А разница-то какая ? Оба правИльные.


Точно??


Palladin   (2008-04-24 15:45:00) [9]

:)) в орешник...


tesseract   (2008-04-24 15:44:00) [10]


> Первое что приходит на ум это AnsireplaceText(text,'o','o');
> Но я подозреваю здесь нужно через их ASCII код менять ..
> . Подскажите верный вариант ...


А разница-то какая ? Оба правИльные.


webSQLNeederr   (2008-04-24 15:31:00) [11]

как угодно ... как правельно то !!?


Kolan   (2008-04-24 15:26:00) [12]

Да как угодно, работы на 5 минут…


Наверх

Титульная страница Поиск, карта сайта Написать письмо