Что нового

[Автоматизация] Смена раскладки текста

_Lexa98_

Осваивающий
Сообщения
551
Репутация
25
Есть текст: qwerty
Нужно чтобы скрипт этот текст выдал мне в другой раскладке: йцукен
И обратно...
Как это сделать?
 

madmasles

Модератор
Глобальный модератор
Сообщения
7,790
Репутация
2,322
_Lexa98_,
Сделайте 2-х мерный массив с нужными символами и меняйте их как Вам надо.
 

madmasles

Модератор
Глобальный модератор
Сообщения
7,790
Репутация
2,322
_Lexa98_,
Или без массива, должно быть быстрее. Особо не проверял.
Код:
$sStringRU = 'йцукен' ;и т.д.
$sStringEN = 'qwerty' ;и т.д.

$sString = 'qetrtwyew'
$sNewString = ''
For $i = 1 To StringLen($sString)
	$sNewString &= StringMid($sStringRU, StringInStr($sStringEN, StringMid($sString, $i, 1), 1), 1)
Next
ConsoleWrite($sNewString & @LF)
 

Viktor1703

AutoIT Гуру
Сообщения
1,535
Репутация
413
Как-то так:

Код:
#Include <GUIConstantsEx.au3>
#Include <WindowsConstants.au3>
#Include <WinAPIEx.au3>

$hForm = GUICreate('', 600, 400)
$Input = GUICtrlCreateInput('test', 20, 20, 80, 20)
$button = GUICtrlCreateButton('Button', 20, 50, 80, 20)
GUISetState()

While 1
    Switch GUIGetMsg()
        Case $GUI_EVENT_CLOSE
            Exit
		Case $button
            GUICtrlSetData($Input, InvertLanguage(GUICtrlRead($Input)))			
    EndSwitch
WEnd

Func InvertLanguage($sString)
	Local $bEnglish[47] = [')', '!', '@', '#', '$', '%', '^', '&', '*', '(', '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", ":", "+", "<", "_", ">", "?", "~", "{", "|", "}", '"']
    Local $sEnglish[47] = ['0', '1', '2', '3', '4', '5', '6', '7', '8', '9', '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", ";", "=", ",", "-", ".", "/", "`", "[", "\", "]", "'"]
    Local $bRussian[47] = [')', '!', '"', '№', ';', '%', ':', '?', '*', '(', 'Ф', "И", "С", "В", "У", "А", "П", "Р", "Ш", "О", "Л", "Д", "Ь", "Т", "Щ", "З", "Й", "К", "Ы", "Е", "Г", "М", "Ц", "Ч", "Н", "Я", "Ж", "+", "Б", "_", "Ю", ",", "Ё", "Х", "/", "Ъ", "Э"]
    Local $sRussian[47] = ['0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'ф', "и", "с", "в", "у", "а", "п", "р", "ш", "о", "л", "д", "ь", "т", "щ", "з", "й", "к", "ы", "е", "г", "м", "ц", "ч", "н", "я", "ж", "=", "б", "-", "ю", ".", "ё", "х", "\", "ъ", "э"]
    Local $sResult, $sCompare
    For $i = 0 To StringLen($sString)
		$sSymbol = Asc(StringMid($sString, $i, 1))
		For $y = 0 To 46
		    If Asc($bEnglish[$y]) = $sSymbol Then 
				If $sCompare <> $bRussian[$y] Then
				    $sResult &= $bRussian[$y]
					$sCompare = $bRussian[$y]
				EndIf	
			EndIf	
			If Asc($sEnglish[$y]) = $sSymbol Then 
				If $sCompare <> $sRussian[$y] Then
				    $sResult &= $sRussian[$y]
				    $sCompare = $sRussian[$y]
				EndIf	
			EndIf	
			If Asc($bRussian[$y]) = $sSymbol Then 
				If $sCompare <> $bEnglish[$y] Then
				    $sResult &= $bEnglish[$y]
					$sCompare = $bEnglish[$y]
				EndIf	
			EndIf	
			If Asc($sRussian[$y]) = $sSymbol Then 
				If $sCompare <> $sEnglish[$y] Then
				    $sResult &= $sEnglish[$y]
				    $sCompare= $sEnglish[$y]
				EndIf	
            EndIf				
		Next
	Next
    Return $sResult	
EndFunc
 
Автор
_Lexa98_

_Lexa98_

Осваивающий
Сообщения
551
Репутация
25
madmasles
С вашим выходит это: йуекецнуц
Viktor1703
С вашим все хорошо, только пробелы убирает :smile: (исправьте пожалуйста)



Добавлено:
Сообщение автоматически объединено:

Viktor1703
А все сам решил :smile:
Нужно заменить:
Код:
Local $bEnglish[47] = [')', '!', '@', '#', '$', '%', '^', '&', '*', '(', '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", ":", "+", "<", "_", ">", "?", "~", "{", "|", "}", '"']
    Local $sEnglish[47] = ['0', '1', '2', '3', '4', '5', '6', '7', '8', '9', '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", ";", "=", ",", "-", ".", "/", "`", "[", "\", "]", "'"]
    Local $bRussian[47] = [')', '!', '"', '№', ';', '%', ':', '?', '*', '(', 'Ф', "И", "С", "В", "У", "А", "П", "Р", "Ш", "О", "Л", "Д", "Ь", "Т", "Щ", "З", "Й", "К", "Ы", "Е", "Г", "М", "Ц", "Ч", "Н", "Я", "Ж", "+", "Б", "_", "Ю", ",", "Ё", "Х", "/", "Ъ", "Э"]
    Local $sRussian[47] = ['0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'ф', "и", "с", "в", "у", "а", "п", "р", "ш", "о", "л", "д", "ь", "т", "щ", "з", "й", "к", "ы", "е", "г", "м", "ц", "ч", "н", "я", "ж", "=", "б", "-", "ю", ".", "ё", "х", "\", "ъ", "э"]

На:
Код:
Local $bEnglish[48] = [' ', ')', '!', '@', '#', '$', '%', '^', '&', '*', '(', '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", ":", "+", "<", "_", ">", "?", "~", "{", "|", "}", '"']
    Local $sEnglish[48] = [' ', '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', '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", ";", "=", ",", "-", ".", "/", "`", "[", "\", "]", "'"]
    Local $bRussian[48] = [' ', ')', '!', '"', '№', ';', '%', ':', '?', '*', '(', 'Ф', "И", "С", "В", "У", "А", "П", "Р", "Ш", "О", "Л", "Д", "Ь", "Т", "Щ", "З", "Й", "К", "Ы", "Е", "Г", "М", "Ц", "Ч", "Н", "Я", "Ж", "+", "Б", "_", "Ю", ",", "Ё", "Х", "/", "Ъ", "Э"]
    Local $sRussian[48] = [' ', '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'ф', "и", "с", "в", "у", "а", "п", "р", "ш", "о", "л", "д", "ь", "т", "щ", "з", "й", "к", "ы", "е", "г", "м", "ц", "ч", "н", "я", "ж", "=", "б", "-", "ю", ".", "ё", "х", "\", "ъ", "э"]

Спасибо! Все решено ;D
 
Верх