2017-06-19 7 views
-1

私はLuaを使用するTableTop Simulatorと呼ばれるゲームのホッブストモンダです。ルアで大きな(ish)テキスト文字列をフレーズ

私はカードのデッキを表す複数の行のデータのリストを含む単一の文字列を持っています。私がする必要がどのような

Example: 
2x Blackwood File Clerk 
1x Patrol Wagon 
3x Short Fuse 
1x Adult Deep One 
1x Deep One Assault 
1x Shadowed Reef 
3x Agoraphobia 

は、私はその後、デッキを構築するためにカードと数量を取るために使用できる言葉で表現形式にその文字列を取得することです。

私はこのようになりますテーブルのいくつかの種類をしようと考えていた。..

deckList{} 
    deckList[1].name = 'Blackwood File Clerk' 
    deckList[1].quantity= 2 
    deckList[2].name = 'Patrol Wagon' 
    deckList[2].quantity= 1 

などなど....

その後、私は、一致するカードを見つけるために、名前の文字列を使用することができますそれから数量の値をそれの多くのコピーを取る。

私が持っている問題は、これを行う方法がわからないということです。私はどうにかして各行を分けて、価値と物を引き出す必要があります。私はそれがいつも1,2,3であると思うので、それを削除すると完全に検索するために名前を残すので、線を「1倍」にすることができます。それでも私はそれぞれの行と読み物を読む必要があります。アイデアを

+0

、 – hjpotter92

+1

[ 'string.gmatch'](https://devdocs.io/lua~5.3/index#pdf-string.gmatch)に見ても、それはLuaの(またはLUA)です、 LUAではありません。 https://www.lua.org/about.htmlを確認してください – hjpotter92

答えて

2
local str = [[ 
2x Blackwood File Clerk 
1x Patrol Wagon 
3x Short Fuse 
1x Adult Deep One 
1x Deep One Assault 
1x Shadowed Reef 
3x Agoraphobia]] 

local deckList = {} 
for line in str:gmatch"[^\r\n]+" do 
    local qty, name = line:match"^(%d+)x%s+(.-)%s*$" 
    table.insert(deckList, {name = name, quantity = tonumber(qty)}) 
end 
関連する問題