Строка в вопросе (считывается из файла):
if (true) then
{
_this = createVehicle ["Land_hut10", [6226.8901, 986.091, 4.5776367e-005], [], 0, "CAN_COLLIDE"];
_vehicle_10 = _this;
_this setDir -2.109278;
};
Извлечено из большого списка похожих (все в одном файле) строк с помощью следующего:
get_stringR(string,"if","};")
И код функции:
def get_stringR(a,b,c)
b = a.index(b)
b ||= 0
c = a.rindex(c)
c ||= b
r = a[b,c]
return r
end
Пока что это работает нормально, но я хотел выбрать массив после "createVehicle", следующее (я думал) должно работать.
newstring = get_string(myString,"\[","\];")
Примечание get_string - это то же самое, что и get_stringR , за исключением того, что оба раза используется первое вхождение шаблона, а не первое и последнее вхождения.
Выход должен был быть:
["Land_hut10", [6226.8901, 986.091, 4.5776367e-005], [], 0, "CAN_COLLIDE"];
Вместо этого это было ниже, дано через «путы»:
["Land_hut10", [6226.8901, 986.091, 4.5776367e-005], [], 0, "CAN_COLLIDE"];
_vehicle_10 = _this;
_this setDir
Примерно 40 символов после точки, которую он должен был получить, что было очень странно ...
Во-вторых, использование и get_string и get_stringR позволило получить точно такой же результат с заданными параметрами.
Затем я решил добавить следующее в мой код get_string:
b = a.index(b)
b ||= 0
c = a.index(c)
c ||= b
if c > 40 then
c -= 40
end
r = a[b,c]
return r
И он работает как положено (для каждого «блока» в файле, хотя строки после этого массива не идентичны в любом случае), но что-то явно не так:).