0
的串问题(从文件中读取):奇怪的红宝石串选择
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
它按预期工作(对于文件中的每一“块”,即使该阵列后的字符串不以任何相同方式),但显然是不正确的:)。
谢谢队友!为什么c.size?它不应该是一个大小?如果是这样......为什么? – dcousens 2010-04-05 11:58:22
如果我们有字符串“abcde”和分隔符“a”和“德”,那么字符串#指数调用会导致以下范围: ABCDE ^ -^ 这是因为字符串#指数收益率比赛的起始位置。 所以我们必须在最后加上结束分隔符的长度(减1)来得到整个子串。 编辑:meh,在评论中没有新行/格式化?我希望你明白我的意思 – 2010-04-05 12:16:04
是的,我做了,感谢您的帮助! – dcousens 2010-04-05 14:10:03