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