1

Тема: AHK: Точки в числах

Всем здравствуйте, не подскажете, нет ли такой функции или кода, чтобы, например у нас если число - 1001, нам надо, чтобы скрипт автоматически ставил точку там, то есть так:
Мы вводим число: 2004000
Скрипт автоматически должен расставить точки: 2.004.000
Всем спасибо заранее!

2

Re: AHK: Точки в числах

Такая функция есть, знакомьтесь: RegExReplace().

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

3 (изменено: sanniauto, 2017-10-21 10:16:30)

Re: AHK: Точки в числах

Да, я знаю про эту функцию, но как именно реализовать её?
То есть числа то могут быть от ∞ до ∞. А RegExReplace только может заменить конкретную степень числа.

4

Re: AHK: Точки в числах

sanniauto пишет:

То есть числа то могут быть от ∞ до ∞.

Не совсем это понял, как это от ∞ до ∞?

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

5 (изменено: sanniauto, 2017-10-21 10:16:53)

Re: AHK: Точки в числах

teadrinker, ну то есть любые.

6

Re: AHK: Точки в числах

Что значит любые? Отрицательные, нецелые тоже могут быть?

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

7 (изменено: sanniauto, 2017-10-21 10:17:18)

Re: AHK: Точки в числах

Ну как объяснить, например пользователь вводит в InputBox совершенно любое число, а ему в Msgbox приходит это же число, только с расставлеными точками.

8

Re: AHK: Точки в числах

Такое можно реализовать с помощью RegExReplace?

9 (изменено: teadrinker, 2017-10-21 09:48:32)

Re: AHK: Точки в числах

Ну то-есть он, например, такое может ввести: -0,000012345 ?

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

10 (изменено: sanniauto, 2017-10-21 10:18:06)

Re: AHK: Точки в числах

Да, совершенно любое число, только без точек.

11 (изменено: sanniauto, 2017-10-21 10:20:37)

Re: AHK: Точки в числах

В принципе, можно ограничить пользователя только целыми и положительными числами, то есть пользователь вводит целое и положительное число без точек, а скрипт выдает output с точками.

12

Re: AHK: Точки в числах

sanniauto, в Ваших сообщениях хронически не хватает знаков препинания в конце предложений. Пройдитесь по всем сообщениям и исправьте!

13

Re: AHK: Точки в числах

ypppu, исправил.

14

Re: AHK: Точки в числах

Ну это же совсем просто:

number := "1234500,123450000000"
MsgBox, % RegExReplace(number, "\d(?=(\d{3})+(,|$))|\d{3}(?!(.*,|$))", "$0.")
Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Skype dmitry_fiveg

15 (изменено: teadrinker, 2017-10-21 10:26:30)

Re: AHK: Точки в числах

sanniauto пишет:

В принципе, можно ограничить пользователя только целыми и положительными числами, то есть пользователь вводит целое и положительное число без точек, а скрипт выдает output с точками.

Тогда ещё проще:

number := 10000000000
MsgBox, % RegExReplace(number, "\d(?=(\d{3})+$)", "$0.")
Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Skype dmitry_fiveg

16

Re: AHK: Точки в числах

Формат числа с разрядностью http://forum.script-coding.com/viewtopic.php?id=12159

17

Re: AHK: Точки в числах

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

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

18

Re: AHK: Точки в числах

teadrinker, спасибо! Ну на счёт просто - RegExReplace(number, "\d(?=(\d{3})+$)", "$0.") - тут я вообще не понял что как работает.

19

Re: AHK: Точки в числах

Расшифровывается так: если после цифры есть любое количество троек цифр после которых конец строки, такую цифру заменяем на неё же с точкой.

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

20

Re: AHK: Точки в числах

teadrinker, хорошо, спасибо!

21

Re: AHK: Точки в числах

sanniauto пишет:

ypppu, исправил.

Это ещё не всё. Отредактируйте и здесь тоже:
http://forum.script-coding.com/viewtopi … 50#p120250;
http://forum.script-coding.com/viewtopi … 49#p120249;
http://forum.script-coding.com/viewtopi … 93#p120193;
http://forum.script-coding.com/viewtopi … 91#p120191;
http://forum.script-coding.com/viewtopi … 87#p120187;
http://forum.script-coding.com/viewtopi … 82#p120182.

22

Re: AHK: Точки в числах

sanniauto, если вам еще непонятны регулярные выражения, то такие задачи можно решать через SubStr:

number := "1234500", Start := -2, Length := 3
loop
{
   if StrLen(number)>A_Index*Length
   {
      Newnumber := "." SubStr(number, Start, Length) Newnumber
      start-=3
   }
   else
   {
      Newnumber := SubStr(number, 1, StrLen(number)-(A_Index-1)*Length) Newnumber
      break
   }
}
msgbox % Newnumber

23 (изменено: teadrinker, 2017-10-21 15:45:33)

Re: AHK: Точки в числах

red2881 пишет:

Формат числа с разрядностью http://forum.script-coding.com/viewtopic.php?id=12159

Кстати, в моём варианте \G не используется, а вот в таком случае оно не поможет:

Var =
(
Hello, World!
AHK 1234567890.0006789 AutoHotkey
12345000
Bye!
1234567890.0006789
)

Result := RegExReplace(Var, "\G\d+?(?=(?:\d{3})+(?:\D|$))", "$0 ")
MsgBox %Result%

Кто корректно разобьёт пробелами числа в этом примере, в том числе после точки? У меня пока не вышло.

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

24

Re: AHK: Точки в числах

Я отредактировал и исправил.

25

Re: AHK: Точки в числах

teadrinker пишет:

Кто корректно разобьёт пробелами числа в этом примере, в том числе после точки? У меня пока не вышло.

А что должно быть на выходе, задачу не понял.

По вопросам возмездной помощи пишите письма
E-Mail: serzh82saratov@mail.ru
OS: Win7x64, AutoHotkey_L v1.1.26.01 (Unicode 32-bit).