Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / FoxPro, Visual FoxPro Новый топик    Ответить
 Транслитерация русских букв в латинские  [new]
ularsoft
Member

Откуда:
Сообщений: 195
Есть на форме 2 поля:
1. ФИО (1)
2. ФИО (2)
При вводе в поле 1: ПЕТРОВ ПЕТР АЛЕКСЕЕВИЧ, в поле 2 автоматически было заполнено PETROV PETR ALEKSEEVICH
Нет ли у кого нибудь алгоритма транслитерации русских букв в латинские?
19 дек 17, 17:35    [21046429]     Ответить | Цитировать Сообщить модератору
 Re: Транслитерация русских букв в латинские  [new]
Grin
Member

Откуда:
Сообщений: 110
Тынц
19 дек 17, 17:52    [21046502]     Ответить | Цитировать Сообщить модератору
 Re: Транслитерация русских букв в латинские  [new]
Al_fa
Member

Откуда: Курган
Сообщений: 38
ularsoft
Есть на форме 2 поля:
1. ФИО (1)
2. ФИО (2)
При вводе в поле 1: ПЕТРОВ ПЕТР АЛЕКСЕЕВИЧ, в поле 2 автоматически было заполнено PETROV PETR ALEKSEEVICH
Нет ли у кого нибудь алгоритма транслитерации русских букв в латинские?

Для этого надо использовать функцию CHRTRAN

CHRTRAN('ПЕТРОВ', 'АБВГД..', 'ABVGD..')
19 дек 17, 21:27    [21046994]     Ответить | Цитировать Сообщить модератору
 Re: Транслитерация русских букв в латинские  [new]
ВладимирМ
Member

Откуда: г. Москва
Сообщений: 7767
Al_fa
ularsoft
Есть на форме 2 поля:
1. ФИО (1)
2. ФИО (2)
При вводе в поле 1: ПЕТРОВ ПЕТР АЛЕКСЕЕВИЧ, в поле 2 автоматически было заполнено PETROV PETR ALEKSEEVICH
Нет ли у кого нибудь алгоритма транслитерации русских букв в латинские?

Для этого надо использовать функцию CHRTRAN

CHRTRAN('ПЕТРОВ', 'АБВГД..', 'ABVGD..')


Не получится. Транслитерация - это не всегда соответствие один-в-один. В смысле одна буква русского языка заменяется одной буквой английского. Например, в данном примере буква "Ч" заменяется на "CH". Такую замену ChrTran() сделать не сможет

Хотя, конечно, можно сделать комбинированный подход. Сначала ChrTran() там, где замена одни-в-один, потом цикл по StrTran() где одна буква заменяется на набор букв. Правда, особого смысла в этом нет. Вряд ли данный "перевод" выполняется там, где требуется максимальная скорость преобразования
20 дек 17, 12:56    [21048368]     Ответить | Цитировать Сообщить модератору
 Re: Транслитерация русских букв в латинские  [new]
ularsoft
Member

Откуда:
Сообщений: 195
ВладимирМ
Al_fa
Для этого надо использовать функцию CHRTRAN

CHRTRAN('ПЕТРОВ', 'АБВГД..', 'ABVGD..')

Транслитерация - это не всегда соответствие один-в-один.

Например, в данном примере "ПЕТРОВ ПЕТР АЛЕКСЕЕВИЧ" буква "Ч" заменяется на "CH". Такую замену ChrTran() сделать не сможет.

Как сделать комбинированный подход? Сначала ChrTran() там, где замена одни-в-один, потом цикл по StrTran() где одна буква заменяется на набор букв.

Пожалуйста, приведите пример...
13 фев 18, 14:49    [21188006]     Ответить | Цитировать Сообщить модератору
 Re: Транслитерация русских букв в латинские  [new]
ularsoft
Member

Откуда:
Сообщений: 195
Кроме этого, если в поле "ОсОО Линк", то после транслитерации ОсОО на LLC, где ОсОО - Общество с ограниченной ответственностью.
ОАО на OJSC, ЗАО на CJSC, ИП на PE, ЧП на PE и т.д.
13 фев 18, 15:15    [21188123]     Ответить | Цитировать Сообщить модератору
 Re: Транслитерация русских букв в латинские  [new]
ularsoft
Member

Откуда:
Сообщений: 195
С ума сойти...
13 фев 18, 15:16    [21188132]     Ответить | Цитировать Сообщить модератору
 Re: Транслитерация русских букв в латинские  [new]
Dima T
Member

Откуда:
Сообщений: 11668
Вариант по ссылке 21046502 чем не устроил?
13 фев 18, 15:21    [21188152]     Ответить | Цитировать Сообщить модератору
 Re: Транслитерация русских букв в латинские  [new]
Dima T
Member

Откуда:
Сообщений: 11668
ularsoft
Кроме этого, если в поле "ОсОО Линк", то после транслитерации ОсОО на LLC, где ОсОО - Общество с ограниченной ответственностью.
ОАО на OJSC, ЗАО на CJSC, ИП на PE, ЧП на PE и т.д.

Это уже не транслитерация. Прописывай замену всех аббревиатур через strtran(), перед транслитерацией.
13 фев 18, 15:23    [21188163]     Ответить | Цитировать Сообщить модератору
 Re: Транслитерация русских букв в латинские  [new]
ularsoft
Member

Откуда:
Сообщений: 195
Dima T
Вариант по ссылке 21046502 чем не устроил?

Вариант хороший... Но как его использовать? Немного подтолкните пожалуйста Дима...
13 фев 18, 15:26    [21188177]     Ответить | Цитировать Сообщить модератору
 Re: Транслитерация русских букв в латинские  [new]
Dima T
Member

Откуда:
Сообщений: 11668
ularsoft
Dima T
Вариант по ссылке 21046502 чем не устроил?

Вариант хороший... Но как его использовать? Немного подтолкните пожалуйста Дима...

В смысле? Также как любые UDF функции.

Просто вызвать
? translit('Проверка')
13 фев 18, 15:30    [21188196]     Ответить | Цитировать Сообщить модератору
 Re: Транслитерация русских букв в латинские  [new]
Dima T
Member

Откуда:
Сообщений: 11668
Можно тот код упростить:
 PROCEDURE translit  
  LPARAMETERS tcString  
  tcString = ALLTRIM(UPPER(tcString))  
  tcString = strtran(tcString, 'ОАО', 'OJSC')  

  tcString = strtran(tcString, 'А', 'A')  
  tcString = strtran(tcString, 'Б', 'B')  
...
  tcString = strtran(tcString, 'Я', 'YA')  

return tcString
13 фев 18, 15:35    [21188213]     Ответить | Цитировать Сообщить модератору
 Re: Транслитерация русских букв в латинские  [new]
ularsoft
Member

Откуда:
Сообщений: 195
Dima T
Просто вызвать
? translit('Проверка')

Сейчас попробую. Спасибо друг.
13 фев 18, 17:47    [21188814]     Ответить | Цитировать Сообщить модератору
 Re: Транслитерация русских букв в латинские  [new]
ularsoft
Member

Откуда:
Сообщений: 195
Dima T
Можно тот код упростить:
 PROCEDURE translit  
  LPARAMETERS tcString  
  tcString = ALLTRIM(UPPER(tcString))  
  tcString = strtran(tcString, 'ОАО', 'OJSC')  

  tcString = strtran(tcString, 'А', 'A')  
  tcString = strtran(tcString, 'Б', 'B')  
...
  tcString = strtran(tcString, 'Я', 'YA')  

return tcString


Данную процедуру я сохранил в od1k0t.prg
Вызываю в LostFocus Event таким образом
nam1=table1.nam1
Thisformset.nam2=od1k0t(nam1)

После чего у меня ругается на параметр. Что я не правильно делаю?
13 фев 18, 18:45    [21188992]     Ответить | Цитировать Сообщить модератору
 Re: Транслитерация русских букв в латинские  [new]
Dima T
Member

Откуда:
Сообщений: 11668
ularsoft
Данную процедуру я сохранил в od1k0t.prg
Вызываю в LostFocus Event таким образом
nam1=table1.nam1
Thisformset.nam2=od1k0t(nam1)

После чего у меня ругается на параметр. Что я не правильно делаю?

Ругается матом или есть сообщение об ошибке?

Если в prg сохранил, то как минимум НЕ надо первую строку " PROCEDURE translit ", на этом мои телепатические способности заканчиваются, надо сообщение об ошибке.
13 фев 18, 19:37    [21189095]     Ответить | Цитировать Сообщить модератору
 Re: Транслитерация русских букв в латинские  [new]
ularsoft
Member

Откуда:
Сообщений: 195
Dima T
Ругается матом или есть сообщение об ошибке?
13 фев 18, 19:42    [21189098]     Ответить | Цитировать Сообщить модератору
 Re: Транслитерация русских букв в латинские  [new]
ularsoft
Member

Откуда:
Сообщений: 195
Dima T
Если в prg сохранил, то как минимум НЕ надо первую строку " PROCEDURE translit "
СУПЕР!!!! ВСЕ ПОЛУЧИЛОСЬ!
13 фев 18, 19:48    [21189102]     Ответить | Цитировать Сообщить модератору
Все форумы / FoxPro, Visual FoxPro Ответить