YEAR、CITY、COUNTRYの形式のデータを含むテキストファイルがあります。データは、1行に1つのYEAR、CITY、COUNTRYとして書き込まれます。例-:
以前は、このようにハードコードされたデータを使用していました
local data = {}
data[1] = { year = 1896, city = "Athens", country = "Greece" }
data[2] = { year = 1900, city = "Paris", country = "France" }
data[3] = { year = 1904, city = "St Louis", country = "USA" }
data[4] = { year = 1908, city = "London", country = "UK" }
data[5] = { year = 1912, city = "Stockholm", country = "Sweden" }
data[6] = { year = 1920, city = "Antwerp", country = "Netherlands" }
次に、ファイルから行を読み取り、値をプライベートナレッジベース "local data = {}"に取得する必要があります。
ファイル内のデータから単一のパターンを使用して複数の値をキャプチャする方法を理解することはできません。
これまでの私のコードは
local path = system.pathForFile( "olympicData.txt", system.ResourceDirectory )
-- Open the file handle
local file, errorString = io.open( path, "r" )
if not file then
-- Error occurred; output the cause
print( "File error: " .. errorString )
else
-- Read each line of the file
for line in file:lines() do
local i, value = line:match("%d")
table.insert(data, i)
-- Close the file
io.close(file)
end
file = nil
あなたが次のような行を読んだとすると
1896, Athens, Greece
キャプチャを使用して、目的の値を簡単に取得できます。
https://www.lua.org/manual/5.3/manual.html#6.4.1
キャプチャ:パターンには、括弧で囲まれたサブパターンを含めることができます。それらはキャプチャについて説明します。一致が成功すると、キャプチャに一致するサブジェクト文字列の部分文字列が保存(キャプチャ)され、後で使用できるようになります。キャプチャには、左括弧に従って番号が付けられます。たとえば、パターン「(a *(。)%w(%s *))」では、「a *(。)%w(%s *)」に一致する文字列の部分が最初のキャプチャとして格納されます(したがって、番号は1です); 「。」に一致する文字 は番号2でキャプチャされ、「%s *」に一致する部分の番号は3です。
特別な場合として、空のキャプチャ()は、現在の文字列位置(数値)をキャプチャします。たとえば、文字列「flaaap」にパターン「()aa()」を適用すると、3と5の2つのキャプチャがあります。
local example = "1896, Athens, Greece"
local year, city, country = example:match("(%d+), (%w+), (%w+)")
print(year, city, country)
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加