1 (изменено: DxNeferzul, 2021-01-17 18:32:32)

Тема: AHK: Преобразование букв в цифры

Доброго времени суток, попробовал сделать скрипт для преобразования букв в цифры но столкнулся с трудностями, буду рад помощи.
Есть цифры от 1 - 9, каждой цифре соответствует своя буква, ниже в коде я указал все соответствия.
Нужно захватить текст в буфер обмена, преобразовать его в цифры и вставить рядом со словом, гласные при этом удаляются.
Пример:
Чупакабра  453
Чак норрис  430
Якубович  358
Количество цифр не должно превышать 3.


н:=0
м:=0
г:=1
ж:=1
д:=2
т:=2
к:=3
х:=3
ч:=4
щ:=4
п:=5
б:=5
ш:=6
л:=6
с:=7
з:=7
в:=8
ф:=8
р:=9
ц:=9

F1:: 
Send, +{home} ; Выделяю текст слева shift+home
Send, ^{vk43} ; Копирую Ctrl+c
Send, {end} ; Перемещаюсь в конец строки и
Send, {space} ; ставлю пробел.
			StringReplace, clipboard, clipboard, г, 1, All ;
			StringReplace, clipboard, clipboard, ж, 1, All
			StringReplace, clipboard, clipboard, д, 2, All
			StringReplace, clipboard, clipboard, т, 2, All
			StringReplace, clipboard, clipboard, а, , All ; удаляю все гласные буквы, нужны только согласные.
			StringReplace, clipboard, clipboard, и, , All ; 
			StringReplace, clipboard, clipboard, е, , All ; 
sleep 20
			Send, ^{vk56} ; Вставляю текст, преобразованный в соответствующие цифры ctrl-v
Return

2

Re: AHK: Преобразование букв в цифры

DxNeferzul пишет:

каждой цифре соответствует свой слог, ниже в коде я указал все соответствия

Наверно, не знаете, что означает слово "слог", у вас там соответствия буквам.
А по какому принципу Чак норрис в 430 превращается? Нуля же в списке нет.

Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Telegram jollycoder

3

Re: AHK: Преобразование букв в цифры

Добавил ноль.

4 (изменено: serzh82saratov, 2021-01-17 18:50:38)

Re: AHK: Преобразование букв в цифры

А на фига вам такое?


chrs := {г:1
    , н:0
    , м:0
	, ж:1
	, д:2
	, т:2
	, к:3
	, х:3
	, ч:4
	, щ:4
	, п:5
	, б:5
	, ш:6
	, л:6
	, с:7
	, з:7
	, в:8
	, ф:8
	, р:9
	, ц:9} 



1:: 
	ret := ""
	Send, +{home} ; Выделяю текст слева shift+home
	Send, ^{vk43} ; Копирую Ctrl+c
	ClipWait 0.3
	Send, {end} ; Перемещаюсь в конец строки и
	Send, {space} ; ставлю пробел.
	Loop, Parse, clipboard
	{ 
		chr := Format("{:L}", A_LoopField)
		(chrs.haskey(chr)) && (ret .= chrs[chr])  
	} Until StrLen(ret) = 3
	clipboard := ret
	sleep 20
	Send, ^{vk56} ; Вставляю текст, преобразованный в соответствующие цифры ctrl-v
	Return
По вопросам возмездной помощи пишите на E-Mail: serzh82saratov@mail.ru Telegram: https://t.me/sergiol982
Win10x64 AhkSpy, Hotkey, ClockGui

5

Re: AHK: Преобразование букв в цифры

Попробуйте так:


н:=0
м:=0
г:=1
ж:=1
д:=2
т:=2
к:=3
х:=3
ч:=4
щ:=4
п:=5
б:=5
ш:=6
л:=6
с:=7
з:=7
в:=8
ф:=8
р:=9
ц:=9

F1:: 
Send, +{home} ; Выделяю текст слева shift+home
Send, ^{vk43} ; Копирую Ctrl+c
Send, {end} ; Перемещаюсь в конец строки и
Send, {space} ; ставлю пробел.
Loop, parse, Clipboard
{
   try if (%A_LoopField% != "")
      num .= %A_LoopField%
} until StrLen(num) = 3

SendInput, % num ; Вставляю текст, преобразованный в соответствующие цифры ctrl-v
Return
Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Telegram jollycoder

6

Re: AHK: Преобразование букв в цифры

Составляю мнемонический словарь, от 1 до 1000 слов, большую часть сделал вручную, и подумал частично автоматизировать процесс.
А сама затея, как хобби заинтересовала, суть идеи, запоминать цифры, дата, слова, книги и прочее с помощью визуализации действия.
Тот-же 430 - чакноррис, номер может принадлежать к примеру машине и можно представить как машина разбивается об Чака, тот в свою очередь сердито смотрит на хулигана.
Яркие события легче запомнить.

7

Re: AHK: Преобразование букв в цифры

DxNeferzul
Такое надо переварить.
teadrinker
Твой вариант обрабатывает заглавные?

По вопросам возмездной помощи пишите на E-Mail: serzh82saratov@mail.ru Telegram: https://t.me/sergiol982
Win10x64 AhkSpy, Hotkey, ClockGui

8 (изменено: DxNeferzul, 2021-01-17 19:15:08)

Re: AHK: Преобразование букв в цифры

teadrinker
Выдаёт не верные значение.
Чакноррис      98 вместо 430
Викинг   983 вместо  830
Жираф  983 вместо 198
Крокодил 983 вместо 393

9

Re: AHK: Преобразование букв в цифры

Вы пишите к кому обращаетесь, тут экстрасенсов нет.

По вопросам возмездной помощи пишите на E-Mail: serzh82saratov@mail.ru Telegram: https://t.me/sergiol982
Win10x64 AhkSpy, Hotkey, ClockGui

10 (изменено: DxNeferzul, 2021-01-17 19:07:13)

Re: AHK: Преобразование букв в цифры

не работает.

11 (изменено: __Михаил__, 2021-01-17 19:18:56)

Re: AHK: Преобразование букв в цифры

DxNeferzul

Очистку переменной нужно добавить:

F1::
num =
Win10x64, AHK v1.1.37.01 (Unicode 64-bit) | AHK-Wiki | Переменные и выражения | RegEx101

12

Re: AHK: Преобразование букв в цифры

DxNeferzul пишет:

не работает.

А тот который работает, не пробовали запустить?

По вопросам возмездной помощи пишите на E-Mail: serzh82saratov@mail.ru Telegram: https://t.me/sergiol982
Win10x64 AhkSpy, Hotkey, ClockGui

13

Re: AHK: Преобразование букв в цифры

serzh82saratov

н:=0
м:=0
г:=1
ж:=1
д:=2
т:=2
к:=3
х:=3
ч:=4
щ:=4
п:=5
б:=5
ш:=6
л:=6
с:=7
з:=7
в:=8
ф:=8
р:=9
ц:=9

F1:: 
Send, +{home} ; Выделяю текст слева shift+home
Send, ^{vk43} ; Копирую Ctrl+c
Send, {end} ; Перемещаюсь в конец строки и
Send, {space} ; ставлю пробел.
Loop, parse, Clipboard
{
   try if (%A_LoopField% != "")
      num .= %A_LoopField%
} until StrLen(num) = 3

SendInput, % num ; Вставляю текст, преобразованный в соответствующие цифры ctrl-v
Sleep, 50
num =
Return

На заглавные буквы скрипт teadrinker не работает.
Помогает совет от __Михаил__

F1::
num =

Но в скрипте пока не знаю как пристроить, работает криво.

14

Re: AHK: Преобразование букв в цифры

А какая версия AHK?

Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Telegram jollycoder

15

Re: AHK: Преобразование букв в цифры

teadrinker
1.1.24.01

16

Re: AHK: Преобразование букв в цифры

DxNeferzul
Какая версия браузера, 4 пост как отображается?

По вопросам возмездной помощи пишите на E-Mail: serzh82saratov@mail.ru Telegram: https://t.me/sergiol982
Win10x64 AhkSpy, Hotkey, ClockGui

17

Re: AHK: Преобразование букв в цифры

н:=0
м:=0
г:=1
ж:=1
д:=2
т:=2
к:=3
х:=3
ч:=4
щ:=4
п:=5
б:=5
ш:=6
л:=6
с:=7
з:=7
в:=8
ф:=8
р:=9
ц:=9

F1:: 
Send, +{home} ; Выделяю текст слева shift+home
sleep 10
Send, ^{vk43} ; Копирую Ctrl+c
sleep 10
Send, {end} ; Перемещаюсь в конец строки и
sleep 10
Send, {space} ; ставлю пробел.
sleep 10
Loop, parse, Clipboard
{
   try if (%A_LoopField% != "")
      num .= %A_LoopField%
} until StrLen(num) = 3

SendInput, % num ; Вставляю текст, преобразованный в соответствующие цифры ctrl-v
Sleep, 50
num =
Return

Добавил задержки и заработало, но на заглавные не работает.

18 (изменено: DxNeferzul, 2021-01-17 19:36:13)

Re: AHK: Преобразование букв в цифры

serzh82saratov
https://i.ibb.co/d2H3fV4/4.jpg

19

Re: AHK: Преобразование букв в цифры

О, и у меня также.

По вопросам возмездной помощи пишите на E-Mail: serzh82saratov@mail.ru Telegram: https://t.me/sergiol982
Win10x64 AhkSpy, Hotkey, ClockGui

20 (изменено: serzh82saratov, 2021-01-17 19:39:40)

Re: AHK: Преобразование букв в цифры

Мне кажется, или там что то похожее на код.

По вопросам возмездной помощи пишите на E-Mail: serzh82saratov@mail.ru Telegram: https://t.me/sergiol982
Win10x64 AhkSpy, Hotkey, ClockGui

21 (изменено: teadrinker, 2021-01-17 19:47:37)

Re: AHK: Преобразование букв в цифры

Попробуйте обновить AHK до текущей версии. Может, так сработает:


н:=0
м:=0
г:=1
ж:=1
д:=2
т:=2
к:=3
х:=3
ч:=4
щ:=4
п:=5
б:=5
ш:=6
л:=6
с:=7
з:=7
в:=8
ф:=8
р:=9
ц:=9

F1:: 
Send, +{home} ; Выделяю текст слева shift+home
Send, ^{vk43} ; Копирую Ctrl+c
Send, {end} ; Перемещаюсь в конец строки и
Send, {space} ; ставлю пробел.
num := ""
Loop, parse, Clipboard
{
   loverVar := Format("{:L}", A_LoopField)
   try if (%loverVar% != "")
      num .= %loverVar%
} until StrLen(num) = 3

SendInput, % num ; Вставляю текст, преобразованный в соответствующие цифры ctrl-v
Return
Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Telegram jollycoder

22

Re: AHK: Преобразование букв в цифры

teadrinker
Добавил в код задержки и всё заработало, теперь и с заглавными буквами, спасибо всем.

н:=0
м:=0
г:=1
ж:=1
д:=2
т:=2
к:=3
х:=3
ч:=4
щ:=4
п:=5
б:=5
ш:=6
л:=6
с:=7
з:=7
в:=8
ф:=8
р:=9
ц:=9

F1:: 
Send, +{home} ; Выделяю текст слева shift+home
sleep 10
Send, ^{vk43} ; Копирую Ctrl+c
sleep 10
Send, {end} ; Перемещаюсь в конец строки и
sleep 10
Send, {space} ; ставлю пробел.
sleep 10
num := ""
Loop, parse, Clipboard
{
   try if (%A_LoopField% != "") {
      num .= %A_LoopField%
      continue
   }
   loverVar := Format("{:L}", A_LoopField)
   try if (%loverVar% != "")
      num .= %loverVar%
} until StrLen(num) = 3

SendInput, % num ; Вставляю текст, преобразованный в соответствующие цифры ctrl-v
Return

23

Re: AHK: Преобразование букв в цифры

Подправил немного, там лишнее.

Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Telegram jollycoder

24 (изменено: __Михаил__, 2021-01-17 19:59:31)

Re: AHK: Преобразование букв в цифры

Для меня остаётся загадкой - как эта строка:

num .= %A_LoopField%

преобразуется в цифру? Где об этом прочитать?

Upd: Всё дошло, понял что сверху переменные для этого и объявлены.

Win10x64, AHK v1.1.37.01 (Unicode 64-bit) | AHK-Wiki | Переменные и выражения | RegEx101

25

Re: AHK: Преобразование букв в цифры

__Михаил__ Хе-хе, у меня вчера был такой же вопрос и serzh82saratov ответил так:

Операторы в выражениях
Если переменная внутри выражения обрамлена знаками процента, например, %Var%, ее содержимое трактуется как имя или часть имени другой переменной

GD

26

Re: AHK: Преобразование букв в цифры

Botsy

Это я и так знал, вчера этот сообщение тоже видел. Просто забыл, что сверху идёт заполнение этих самых букв / переменных. Смотрел пару минут в один участок кода и не мог сообразить взглянуть вверх кода.

Win10x64, AHK v1.1.37.01 (Unicode 64-bit) | AHK-Wiki | Переменные и выражения | RegEx101

27 (изменено: __Михаил__, 2021-01-17 21:56:11)

Re: AHK: Преобразование букв в цифры

Кстати, до первых  рабочих вариантов набросал такой способ преобразования букв в ассоциативный массив. Но не смог его правильно применить.
Может кому пригодиться.

ABW = н|м|г|ж|д|т|к|х|ч|щ|п|б|ш|л|с|з|в|ф|р|ц	; Строка всех букв.

List := Array()	; Массив для замены.

Loop, Parse, ABW, |
{
 ind := A_Index-1 >> 1	; Преобразование.
 List[A_LoopField] := ind	; Запись в массив.
 Txt .= A_LoopField . List[A_LoopField] "`t"
}

ToolTip, Txt:`n%Txt%,0,0
Win10x64, AHK v1.1.37.01 (Unicode 64-bit) | AHK-Wiki | Переменные и выражения | RegEx101

28

Re: AHK: Преобразование букв в цифры

__Михаил__ пишет:
ind := A_Index-1 >> 1

Интересный способ.

Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Telegram jollycoder

29

Re: AHK: Преобразование букв в цифры

Когда надо по два, четыре, восемь..., то очень интересно, а когда надо будет по три, то целочисленное деление поинтереснее.

По вопросам возмездной помощи пишите на E-Mail: serzh82saratov@mail.ru Telegram: https://t.me/sergiol982
Win10x64 AhkSpy, Hotkey, ClockGui