1 (изменено: Maxfashko, 2012-12-21 06:37:23)

Тема: AHK:RegExMatch(табуляция)

Добрый день!

Возникла следующая проблема с заменой символа в строке

RegExMatch(FileName, "m`a).*>.*", FileName)
Stringreplace,FileName,FileName, >, _

сама строка имеет подобный вид

111>4523

после преобразования 111_4523

Я не смог разобраться, как изменить код чтобы он учитывал табуляцию в такой строке

111>4523[\t]1025     

итоговая стока необходима такая

111_4523_1025





Буду очень признателен, если покажете как это сделать

2 (изменено: creature.ws, 2012-12-21 07:28:21)

Re: AHK:RegExMatch(табуляция)

итоговая стока необходима такая

MsgBox % RegExReplace("111>4523`t1025", "[\t>]+", "_")

3 (изменено: Maxfashko, 2012-12-21 10:28:23)

Re: AHK:RegExMatch(табуляция)

Я дико извиняюсь за дезинформацию
в конечном итоге я понял, что мне это не поможет

постараюсь сейчас сформулировать все точнее!

есть строка 111>4253     10  (вместо пробела табуляция)

мне необходимо это разрезать на отрезки с помощью
StringSplit
Вопрос состоит не в том как это поместить, а в том как ограничить отрезки до символа ">" и "\t"

должно получиться три индекса в которых будут - 111,4253,10

к примеру в js это делается так
создается массив и ограничитель

var ArSplit = currentLine.split('\t', 5);
var Shablon = ArSplit[0];
var Photo = ArSplit[1];
var SizePhoto = ArSplit[2];

Как же это сделать в ahk я не понял

4 (изменено: creature.ws, 2012-12-21 11:06:46)

Re: AHK:RegExMatch(табуляция)

Split := RegExSplit("111>4253`t10", "[>\t]+")
shablon := Split[1]
photo := Split[2]
sizePhoto := Split[3]
MsgBox %shablon% %photo% %sizePhoto%

RegExSplit(ByRef string, delim := "", ommit := "") {
    pos := 0, start := 1, EntryList := []

    while pos := RegExMatch(string, delim, match, start)
        EntryList.Insert(Trim(SubStr(string, start, pos - start), ommit)), start := pos + StrLen(match)
    EntryList.Insert(Trim(SubStr(string, start), ommit))

    return EntryList
}

Что-то мне подсказывает, что метод split() с регулярными выражениями не работает.
Если вам «шашечки» — пример выше, если «ехать»:

str := "111>4523`t1025"
StringReplace, str, str, >, `t
StringSplit, str, str, `t
shablon := str1
photo := str2
sizePhoto := str3
MsgBox %shablon% %photo% %sizePhoto%

5

Re: AHK:RegExMatch(табуляция)

Что-то мне подсказывает, что метод split() с регулярными выражениями не работает.
Если вам «шашечки» — пример выше, если «ехать»:

str := "111>4523`t1025"
StringReplace, str, str, >, `t
StringSplit, str, str, `t
shablon := str1
photo := str2
sizePhoto := str3
MsgBox %shablon% %photo% %sizePhoto%

Не совсем понял, про что это Вы=)


С первым вариантом заработало, прочел строку из txt и взял из нее то что нужно спасибо!!!

6 (изменено: creature.ws, 2012-12-21 12:20:03)

Re: AHK:RegExMatch(табуляция)

Не совсем понял, про что это Вы

Вы в качестве простого и понятного примера приводите JS-код.
Разве приведенный JS-код позволяет разбить строку "111>4523\t1025"
на три искомые части?

С первым вариантом заработало

А со вторым нет?

7 (изменено: serzh82saratov, 2012-12-21 15:45:03)

Re: AHK:RegExMatch(табуляция)

Maxfashko пишет:

Не совсем понял, про что это Вы=)

Используйте второй вариант, он проще:

str := "111>4523`t1025"
StringReplace, str, str, `t, >
StringSplit, str, str, >
MsgBox shablon: %str1%`nphoto: %str2%`nsizePhoto: %str3%
По вопросам возмездной помощи пишите на E-Mail: serzh82saratov@mail.ru Telegram: https://t.me/sergiol982
Win10x64 AhkSpy, Hotkey, ClockGui