1 (изменено: cbifhg, 2016-06-23 12:41:26)

Тема: AHK: Прочитать строку, обрезать текст после нужного символа

Добрый день.
У меня есть задача.

Пример задачи:
Есть строка браузера допустим:
http://forum.script-coding.com/post.php?fid=13

Мне нужно скопировать эту строку, но при этом отрезать ненужную часть.
Я всего 100% знаю какую часть мне нужно отрезать.
Например из этой строки мне нужно отрезать хвост который идет после символов .com

То есть, есть строка
http://forum.script-coding.com/post.php?fid=13
Нужно получить
http://forum.script-coding.com

Доп. данные:
Кол-во символов всегда разное, но я точно знаю что после .com мне символы не нужны и я их могу смело обрезать.
Кол-во символов до .com, так же может быть много, но конец строки всегда завершается .com и это мой идентификатор, как только я вижу в строке .com, все далее я обрезаю.

Есть ли такой функционал в AutoHotkey ?
Я думал на функцию Сабстринг, но что-то подобного не нашел.
Так же смотрел другие варианты но нужного так и не смог найти.

2 (изменено: Flasher, 2016-06-23 13:11:10)

Re: AHK: Прочитать строку, обрезать текст после нужного символа

URL = http://forum.script-coding.com/post.php?fid=13
MsgBox % RegExReplace(URL, "\.com.*", ".com")

3

Re: AHK: Прочитать строку, обрезать текст после нужного символа

Flasher
Еще не проверил, но вроде это решение, проверю вечером.
Спасибо

4 (изменено: cbifhg, 2016-06-27 15:30:11)

Re: AHK: Прочитать строку, обрезать текст после нужного символа

Попробовал.
Не сработало.
Ошибку выдал, якобы не нравится какой то символ...
---------------------------
Error at line 1.

The following variable name contains an illegal character:

The program will exit.
---------------------------
ОК   
---------------------------
мой пример кода, подставил свою ссылку.


URL = http://alabil.com/freeni/Free-alang-Vfrako-Spoll-Ollie-RC-Colr-Fgor-12344-Blueh-wiegs-Rote-control-intelli-root-Spqro/364311155532.html?aff_ptfom=aaf&s=eubrrB%3A&cpt=1466702424240&af=23363&cv=452708&cn=3o98luyglyer0s9x3wf8fysbi8hgpwt3&dp=v5_3o98luyglyer0s9x3wf8fysbi8hgpwt3&afref=http%3A%2F%2Fvlyk.com%2Fzachfeny&aff_trace_kujy=368c3eaaagfb184f9caaba02056fef0702-1466706346680-03695-eub6yrrBy
MsgBox % RegExReplace(URL, ".html.*", ".html")

хочу получить


http://alabil.com/freeni/Free-alang-Vfrako-Spoll-Ollie-RC-Colr-Fgor-12344-Blueh-wiegs-Rote-control-intelli-root-Spqro/364311155532.html

5

Re: AHK: Прочитать строку, обрезать текст после нужного символа

URL := "http://alabil.com/freeni/Free-alang-Vfrako-Spoll-Ollie-RC-Colr-Fgor-12344-Blueh-wiegs-Rote-control-intelli-root-Spqro/364311155532.html?aff_ptfom=aaf&s=eubrrB%3A&cpt=1466702424240&af=23363&cv=452708&cn=3o98luyglyer0s9x3wf8fysbi8hgpwt3&dp=v5_3o98luyglyer0s9x3wf8fysbi8hgpwt3&afref=http%3A%2F%2Fvlyk.com%2Fzachfeny&aff_trace_kujy=368c3eaaagfb184f9caaba02056fef0702-1466706346680-03695-eub6yrrBy"
MsgBox % RegExReplace(URL, "\.html.*", ".html")

6 (изменено: cbifhg, 2016-06-24 00:19:26)

Re: AHK: Прочитать строку, обрезать текст после нужного символа

Что, то я не пойму.
А результат в какую переменную кладется ?
У меня в скрипте не нужно показывать MsgBox.
Мне нужен сам результат в переменную. И дальше я уже переношу в другие места эту строчку.
---

Все понял.
Нужно было сделать так.


asd := "www.lala.html/sdfsdf-sd-f-s-df-s-df-"

aaa := RegExReplace(asd, "\.html.*", ".html")

:Для проверки что лежит в ааа. потом можно удалить. 
MsgBox, %aaa%

7

Re: AHK: Прочитать строку, обрезать текст после нужного символа

Не забыл. Есть использовать :, то присваеваемый текст берём в кавычки, чтобы не было глюков со спецсимволами.
Также важно экранировать точку в регулярном, как у меня, иначе текст blAblAhtml.html?blabla даст blAblhtml.

8 (изменено: cbifhg, 2016-06-24 00:30:19)

Re: AHK: Прочитать строку, обрезать текст после нужного символа

Методом проб и ошибок, все же добился результата, вот такой код у меня получился.




;нажимаем ctrl+c помещаем в буфер обмена clipboard)
Send, ^{vk43}

;переносит из буфара обмена в переменную
clipboard = %clipboard%

;переносим в ааа итог обрезки
aaa := RegExReplace(clipboard, "\.html.*", ".html")

;Смотрим что получилось. потом коментируем
MsgBox, %aaa%

Спасибо за помощь, надеюсь кому нибудь будет полезно

9 (изменено: cbifhg, 2016-06-24 00:55:44)

Re: AHK: Прочитать строку, обрезать текст после нужного символа

Ох что все все равно не получается. Выдается какой то бред.

Вот код.



;нажимаем ctrl+c помещаем в буфер обмена clipboard) Помещаем туда строчку длинную
Send, ^{vk43}

;переносит из буфара обмена в переменную
clipboard = %clipboard%

;Переносим результат обрезки в переменную obrezka
obrezka := RegExReplace(clipboard, "\.html.*", ".html")

;Создаем внутри папки Т0 текстовый файл и помещаем в него obrezka
FileAppend, %obrezka%, %vDate%\Tr%nr%\Tr%nr%.txt

sleep 3500


;Читайем из файла 1 строку
FileReadLine, vFile, %vDate%\Tr%nr%\Tr%nr%.txt, 1

MsgBox, %vFile%


В итоге выполнения кода, в тхт файле, почему то оказывается "sleep 3500"
Вообще не понимаю почему.
Но прикол в том, если MsgBox,  ставить после переноса в переменную обрезка.
то выводится то что нужно, когда код дойдет до MsgBox, %vFile%  то он так же покажет нормальные данные.
Но как только я убираю MsgBox, .... в обоих вариантах. В итоге у меня в файле не обрезанная строка а "sleep 3500"

Почему такое поведение ? Что я не так делаю. ?
Не понимаю, как sleep 3500 может попасть в переменную и после поместиться в тхт файл.

10

Re: AHK: Прочитать строку, обрезать текст после нужного символа

1) В буфере sleep 3500.
2) Чтобы произошло копирование выделенного, рабочее поле с текстом должно быть активно, т.е. как минимум для нормальной работы с выделением и буфером нужен хоткей.
3) Что такое %nr%?

11 (изменено: cbifhg, 2016-06-29 11:35:10)

Re: AHK: Прочитать строку, обрезать текст после нужного символа

Flasher
1. почему там sleep 3500. ?
Если я делаю такой код, то все нормально получается



;нажимаем ctrl+c помещаем в буфер обмена clipboard) Помещаем туда строчку длинную
Send, ^{vk43}

;переносит из буфара обмена в переменную
clipboard = %clipboard%

;Переносим результат обрезки в переменную obrezka
obrezka := RegExReplace(clipboard, "\.html.*", ".html")
MsgBox, %obrezka%

;Создаем внутри папки Т0 текстовый файл и помещаем в него obrezka
FileAppend, %obrezka%, %vDate%\Tr%nr%\Tr%nr%.txt
MsgBox, %obrezka%
sleep 3500


;Читайем из файла 1 строку
FileReadLine, vFile, %vDate%\Tr%nr%\Tr%nr%.txt, 1

MsgBox, %vFile%

в 1 MsgBox, %obrezka%  показывает обрезанная ссылка.
в 2 MsgBox, %vFile% показывается так же обрезанная ссылка.

но если код сделать таким.




;нажимаем ctrl+c помещаем в буфер обмена clipboard) Помещаем туда строчку длинную
Send, ^{vk43}

;переносит из буфара обмена в переменную
clipboard = %clipboard%

;Переносим результат обрезки в переменную obrezka
obrezka := RegExReplace(clipboard, "\.html.*", ".html")


;Создаем внутри папки Т0 текстовый файл и помещаем в него obrezka
FileAppend, %obrezka%, %vDate%\Tr%nr%\Tr%nr%.txt
MsgBox, %obrezka%
sleep 3500


;Читайем из файла 1 строку
FileReadLine, vFile, %vDate%\Tr%nr%\Tr%nr%.txt, 1

MsgBox, %vFile%


то в 1 MsgBox, %obrezka%  показывает sleep 3500
в 2 MsgBox, %vFile% показывается так же sleep 3500

%nr% это другая переменная.

12

Re: AHK: Прочитать строку, обрезать текст после нужного символа

cbifhg
Откуда запускается код?
sleep 3500 вообще зачем?

13 (изменено: cbifhg, 2016-06-29 11:34:38)

Re: AHK: Прочитать строку, обрезать текст после нужного символа

Код запускается прямо в браузере.
Слип 3500, там запускается страница, и нужно подождать пока она откроется и загрузится.

14 (изменено: Alectric, 2016-06-24 06:55:02)

Re: AHK: Прочитать строку, обрезать текст после нужного символа

По моему нельзя присваивать переменной clipboard её же значение...

;переносит из буфара обмена в переменную
clipboard = %clipboard%

Используй другое имя переменной.
И перед использованием буфера его нужно предварительно очищать.

clipboard:=""
Win 10 x64
AHK
                       Справка AHK v1 тебе в помощь.

15

Re: AHK: Прочитать строку, обрезать текст после нужного символа

Alectric пишет:

По моему нельзя присваивать переменной clipboard её же значение...

Можно. Это пример из мануала.
А вот ClipWait после Send, ^{vk43} поставить не помешало бы, как и поправить орфографию до прихода модераторов.

16

Re: AHK: Прочитать строку, обрезать текст после нужного символа

cbifhg код и ссылки нужно оформлять специальными тегами. Исправьте свои сообщения.

17 (изменено: cbifhg, 2016-06-29 11:51:25)

Re: AHK: Прочитать строку, обрезать текст после нужного символа

Поправил.