[問題] 以字串為變數名稱

看板MATLAB作者 (魯到入味)時間8年前 (2016/08/22 10:55), 8年前編輯推噓4(408)
留言12則, 1人參與, 最新討論串1/1
板上各位好,我的問題在於能否有辦法將讀入的字串拿來命名變數? 我的目的在於將說明檔內的項目及內容對應讀出至同個cell中後, 將該項目字串作為其內容字串的變數名稱。 說明檔內容概略如下: . . . FILE_DATE = 2015-07-25T14:36:47Z STATION_ID = "LGN" PROCESSING_SOFTWARE_VERSION = "LPGS_2.5.1" . . . 我以for迴圈及fgetl逐條讀取後以strtok取出等號前後的文字分別為項目及內容, 並存至cell內table{line,1}及table{line,2}中。 目前卡住的地方在於我想用table{line,1}的字串逐項為table{line,2}內的字串命名, 即鍵入FILE_DATE會直接跳出2015-07-25T14:36:47Z。 請板上先進不吝提點,謝謝! -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 49.218.39.53 ※ 文章網址: https://www.ptt.cc/bbs/MATLAB/M.1471834535.A.C93.html

08/22 11:16, , 1F
eval萬能,不過為什麼要這麼做?
08/22 11:16, 1F
感謝sun大提示,之前就有用eval但一直失敗,剛終於試成功, 對於引號放置的位置感覺仍是嘗試錯誤... eval([table{str_lines,1} '= table{str_lines,2}']) 主要是因為這個說明檔未來仍有可能增減內容,而用這種方式就能將所有資訊讀入。 而對於特定用途的應用,我只需知道哪些項目是我需要的就可以把內容抓出來使用。 ※ 編輯: fxxkjoe1231 (49.218.39.53), 08/22/2016 15:04:35

08/22 15:42, , 2F
先看看這是是不你要的字串
08/22 15:42, 2F

08/22 15:42, , 3F
[table{str_lines,1} '= table{str_lines,2}']
08/22 15:42, 3F

08/22 15:42, , 4F
應該是弄反了
08/22 15:42, 4F

08/22 15:43, , 5F
[table{str_lines,1} = ''table{str_lines,2}'']
08/22 15:43, 5F

08/22 15:44, , 6F
不過你這裡要用eval,之後你所謂的「將所有資訊讀入」
08/22 15:44, 6F

08/22 15:44, , 7F
打算怎麼做?一樣用eval?資訊一直都在那個table函數啊?
08/22 15:44, 7F
我用回文內的部分沒問題,內容都以項目名重新命名。 我的意思為,假設我的說明檔內有一百條,則跑了我詢問部分前的程序後, 可得到一個table,內部有該說明檔內的項目及內容(值)各一百項。 而我的問題部分則可以將該table內的內容以項目命名,且該項目名稱不變。 若未來的說明檔增加了其他項目(>一百條),則我一樣可以讀檔, 並將我要的項目及其值抓出來使用。 即使說明檔內的項目增加而改變各項目的排序,而我事先已經確定我需要的項目為何, 我都可以快速讀檔並用該項目名稱找到對應的值。 早期我是先記好各項目位置後,只抓特定值,但自從說明檔改版後新增資訊, 就得親自打開說明檔去找被更改後各項目的位置。 前文我提到的方法是我想到目前較自動化且好維護的方法 ※ 編輯: fxxkjoe1231 (49.218.39.53), 08/22/2016 16:36:13

08/22 16:44, , 8F
得到table的程序已經自動化了,既使說明檔做了變動,也可以
08/22 16:44, 8F

08/22 16:44, , 9F
自動產生新的table?
08/22 16:44, 9F

08/22 16:45, , 10F
所以你需要的只是「用該項目名稱找到對應的值」,那用那個
08/22 16:45, 10F

08/22 16:45, , 11F
table變數就可以辦到了啊?
08/22 16:45, 11F
我大概懂意思了,是指透過字串判斷直接去找table內對應的值? ※ 編輯: fxxkjoe1231 (49.218.39.53), 08/22/2016 22:14:11

08/22 22:23, , 12F
差不多是這個意思,可能要用for,不過才幾百個也不會太慢
08/22 22:23, 12F
文章代碼(AID): #1NkccdoJ (MATLAB)
文章代碼(AID): #1NkccdoJ (MATLAB)