Forum Webscript.Ru

Программирование => Perl => Тема начата: chouck от 18 Апреля 2001, 11:36:54

Название: Как поменять набор букв на другой набор букв?
Отправлено: chouck от 18 Апреля 2001, 11:36:54
Как поменять набор букв на другой набор букв? Причем некоторые буквы надо преобразовать одну буквы в две(например при перекодировке Win->Latinica \'Ч\' -> \'СH\'...) .
Вот как мне кажется что-то похожее , но оно не работает так как надо.
 $cur =~ tr/абвгдежзийклмнопрстуфхцчшщьыъэюяАБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЬЫЪЭЮЯ/abvgde(zh)zijklmnoprstufxc[ch][sh][sh]\'y\'[e\'][yu][ya]ABVGDE[ZH]ZIJKLMNOPRSTUFXC[CH][SH][SH]\'Y\'[E\'][YU][YA]/;
Название: Как поменять набор букв на другой набор букв?
Отправлено: AliMamed от 18 Апреля 2001, 12:05:11
я сделал через массивы
Название: Как поменять набор букв на другой набор букв?
Отправлено: chouck от 18 Апреля 2001, 12:09:47
Цитировать
AliMamed (18-04-2001 12:05):
я сделал через массивы

Как (пример)?
Название: Как поменять набор букв на другой набор букв?
Отправлено: AliMamed от 18 Апреля 2001, 12:32:53
$stroka="321";
@search=("1", "2","3");
@replace=("01","02","03");
for($i=0;$i<3;$i++){
 $stroka=~ s/$search[$i]/$replace[$i]/g;
}
#stroka получится "030201"
Название: Как поменять набор букв на другой набор букв?
Отправлено: chouck от 18 Апреля 2001, 14:45:14
$cur =~ tr/БВЧЗДЕЪЙКЛМНОПРТУФХЖИГШЩЯЬбвчздеъйклмнопртуфхжигшщяь/abvgdezijklmnoprstufxc\'y\'eABVGDEZIJKLMNOPRSTUFXC\'Y\'E/;
 $cur =~ s{Ц}{zh}g;
 $cur =~ s{ц}{ZH}g;
 $cur =~ s{Ы}{sh}g;
 $cur =~ s{ы}{SH}g;
 $cur =~ s{Э}{sh}g;
 $cur =~ s{э}{SH}g;
 $cur =~ s{Ю}{ch}g;
 $cur =~ s{ю}{CH}g;
 $cur =~ s{С}{ya}g;
 $cur =~ s{с}{YA}g;
 $cur =~ s{А}{yu}g;
 $cur =~ s{а}{YU}g;
 $cur =~ s{б}{yu}g;
 $cur =~ s{Б}{YU}g;