1 (изменено: aredlook, 2021-02-17 23:30:47)

Тема: AHK: Смещение ячеек массива

как сместить все значения массива
допустим есть массив [1,2,3,4,5]
мне нужно удалить 2, будет [1,3,4,5]
или допустим 3 нужно, будет[1,2,4,5]
и так далее
помогите, буду очень благодарен!

2 (изменено: serzh82saratov, 2021-02-17 23:34:50)

Re: AHK: Смещение ячеек массива

RemoveAt

arr := [1,2,3,4,5]
MsgBox % PrintSimpleArray(arr)
arr.RemoveAt(2)
MsgBox % PrintSimpleArray(arr)

PrintSimpleArray(arr) {
	for k, v in arr
		str .= v ", " 
	Return "[" RTrim(str, ", ") "]"
}
По вопросам возмездной помощи пишите на E-Mail: serzh82saratov@mail.ru Telegram: https://t.me/sergiol982
Win10x64 AhkSpy, Hotkey, ClockGui

3

Re: AHK: Смещение ячеек массива

serzh82saratov
спасибо!
смотрите, данные в массиве у меня такие [LD-20, FG-25, HN-30, JF-35] (примерно)
если  я удалю допустим 2 ячейку, то должно быть так [LD-20, NH-25,JF-30]

4

Re: AHK: Смещение ячеек массива

поможете?

5 (изменено: serzh82saratov, 2021-02-17 23:44:57)

Re: AHK: Смещение ячеек массива

aredlook пишет:

(примерно)

Как же тут поможешь, если у вас что то примерно.
Если было [LD-20, FG-25, HN-30, JF-35] то должно стать [LD-20, HN-30, JF-35] а не [LD-20, NH-25,JF-30].

arr := ["LD-20", "FG-25", "HN-30", "JF-35"]
MsgBox % PrintSimpleArray(arr)
arr.RemoveAt(2)
MsgBox % PrintSimpleArray(arr)

PrintSimpleArray(arr) {
	for k, v in arr
		str .= (v + 0 != "" ? v : """" v """") ", " 
	Return "[" RTrim(str, ", ") "]"
}
По вопросам возмездной помощи пишите на E-Mail: serzh82saratov@mail.ru Telegram: https://t.me/sergiol982
Win10x64 AhkSpy, Hotkey, ClockGui

6 (изменено: aredlook, 2021-02-17 23:46:28)

Re: AHK: Смещение ячеек массива

serzh82saratov
так в том то и дело что HN-30 нужно заменить на HN-25 a JF-35 на 30
значения могут быть разные

7

Re: AHK: Смещение ячеек массива

Так это совсем другое дело. Встроенных методов для этого нет. Сейчас я не готов вам помочь, я баиньки, может завтра.
Вам пока советую почитать правила форума. Предложения начинаются с заглавных, и заканчиваются точкой.

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

8

Re: AHK: Смещение ячеек массива

serzh82saratov
Хорошо. Спокойной ночи. Я пока что сам попробую, если выйдет я отпишу.

9

Re: AHK: Смещение ячеек массива

Нужны точные данные что удалить, либо правило - по какому признаку определить.

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

10

Re: AHK: Смещение ячеек массива

Вот функция которая вышла. Только кривая очень.

removeinarrayandreplace(array, number) {
	Loop % Array.MaxIndex() {
		RegExMatch(array[number+1], "(.*-)(\d{1,2})", var)
		array[number+1] := var1 "" var2+5
	}
	array.RemoveAt(number)
}

11

Re: AHK: Смещение ячеек массива

Вашу не запускал, у меня так получилось, если не прибавлять по 5, а просто переставлять числа.

arr := ["LD-20", "FG-25", "HN-30", "JF-35"]

MsgBox % PrintSimpleArray(arr)
arr := RemoveAt(2, arr)
MsgBox % PrintSimpleArray(arr)
Return

RemoveAt(At, arr) {
	If (At < 1 || At > arr.Count())
		Return arr
	for k, v in arr, newarr := []
	{
		If (k < At)
			newarr.Push(v)
		Else If (k > At)
			newarr.Push(StrSplit(v, "-")[1] "-" StrSplit(arr[k - 1], "-")[2])
	}
	Return newarr
}

PrintSimpleArray(arr) {
	for k, v in arr
		str .= (v + 0 != "" ? v : """" v """") ", " 
	Return "[" RTrim(str, ", ") "]"
} 
По вопросам возмездной помощи пишите на E-Mail: serzh82saratov@mail.ru Telegram: https://t.me/sergiol982
Win10x64 AhkSpy, Hotkey, ClockGui

12

Re: AHK: Смещение ячеек массива

serzh82saratov
Спасибо большое!