Что нового

Перевод русского текста в транслит.

Heler

Знающий
Сообщения
70
Репутация
11
Всем привет! Понадобилось написать программу для перевода русского текста в транслит. Набросал пример(перевод только маленьких букв):
Код:
#include <GUIConstants.au3>

Global $sBuffer
Dim $aLetters[33][2] = [['а','a'],['б','b'],['в','v'],['г','g'],['д','d'],['е','e'],['ё','e'],['ж','zh'],['з','z'],['и','i'], _
					  ['й','y'],['к','k'],['л','l'],['м','m'],['н','n'],['о','o'],['п','p'],['р','r'],['с','s'],['т','t'], _
					  ['u',''],['ф','f'],['х','h'],['ц','ts'],['ч','ch'],['ш','sh'],['щ','shch'],['ъ',"'"],['ы','i'],['ь',''], _
					  ['э','ie'],['ю','yu'],['я','ya']]
GUICreate('Rus2Translit', 900, 600, -1, -1)
$hEdit_1 = GUICtrlCreateEdit ('', 0, 1, 450, 500, 2101248)
$hEdit_2 = GUICtrlCreateEdit ('', 450, 1, 450, 500, 2101248)
$hButton = GUICtrlCreateButton("Convert", 315, 550, 252, 30)
GUISetState()


While 1
	$Msg = GUIGetMsg()
	Switch $Msg
		Case $GUI_EVENT_CLOSE
			Exit
		Case $hButton
			$sBuffer = GUICtrlRead($hEdit_1)
			For $i = 0 To UBound($aLetters)-1
				$sBuffer = StringRegExpReplace($sBuffer, $aLetters[$i][0], $aLetters[$i][1])
			Next
			GUICtrlSetData( $hEdit_2, $sBuffer)
	EndSwitch
	Sleep(30)
WEnd

Помогите пожалуйста оптимизировать. :smile:
 

CreatoR

Must AutoIt!
Команда форума
Администратор
Сообщения
8,671
Репутация
2,481
http://autoit-script.ru/index.php?topic=2034.0

P.S
Sleep(30) в цикле лишний.
А также не вижу особого смысла использовать RegExp при замене.
 
Автор
H

Heler

Знающий
Сообщения
70
Репутация
11
CreatoR, спасибо за ссылку и советы. Днем буду разбираться.
 

Ganibal95

GreenBytes
Сообщения
877
Репутация
240
Код:
Func _Tras($iText)
Dim $aLetters[33+33][2] = [['а','a'],['б','b'],['в','v'],['г','g'],['д','d'],['е','e'],['ё','e'],['ж','zh'],['з','z'],['и','i'], _
                      ['й','y'],['к','k'],['л','l'],['м','m'],['н','n'],['о','o'],['п','p'],['р','r'],['с','s'],['т','t'], _
                      ['u',''],['ф','f'],['х','h'],['ц','ts'],['ч','ch'],['ш','sh'],['щ','shch'],['ъ',"'"],['ы','i'],['ь',''], _
                      ['э','ie'],['ю','yu'],['я','ya'],['А','A'],['Б','B'],['В','V'],['Г','G'],['Д','D'],['Е','E'],['Ё','E'],['Ж','Zh'],['з','z'],['и','i'], _
                      ['Й','Y'],['К','K'],['Л','L'],['М','M'],['Н','N'],['О','O'],['П','P'],['Р','R'],['С','S'],['Т','T'], _
                      ['u',''],['Ф','F'],['Х','H'],['Ц','Ts'],['Ч','Ch'],['Ш','Sh'],['Щ','Shch'],['Ъ',"'"],['Ы','I'],['Ь',''], _
                      ['Э','Ie'],['Ю','Yu'],['Я','Ya']]
$sBuffer = $iText
For $i = 0 To UBound($aLetters)-1
	$sBuffer = StringRegExpReplace($sBuffer, $aLetters[$i][0], $aLetters[$i][1])
Next
Return $sBuffer
EndFunc


С большими буквами =)
 

Bloodrinker

<Блуждающий...>
Сообщения
228
Репутация
19
Блин, вы извращенцы :laugh:
устанавливаете punto switcher, добавляете комбинацию горячих клавиш для переключения текста в транслит и жмакаете их и все ;)
 

unsend

Новичок
Сообщения
27
Репутация
2
Автор: Bloodrinker
Блин, вы извращенцы
Дять - ты не прав)
Мне например надо было в коде передавать транслитом, так что я ету хрень сам в свое время писал) А пунта тут мало помогает как сам догадываешся
 
Верх