2017-01-04 8 views
3

Luaで文字列をセミコロンで分割する方法は?Luaをセミコロンで分割する

local destination_number="2233334;555555;12321315;2343242" 

ここでは、セミコロン(;)の複数回の出現を見ることができますが、最初のオカレンスの前にのみ上の文字列からの出力が必要です。

しようとしましたコード:

if string.match(destination_number, ";") then 
    for token in string.gmatch(destination_number, "([^;]+),%s*") do 
     custom_destination[i] = token 
     i = i + 1 

    end 
end 

出力:

2233334 

そのための正確な構文を得ることができないので、私は、Luaスクリプトのコードが、初心者の上にしようとしています。までのすべてを、しかし、最初のセミコロンを含めない:

print(string.match(destination_number, "(.-);")) 

パターンが読み:あなただけ最初発生をしたい場合は

+1

'destination_number:gmatch '(%d +);?''文字が必要な場合は '%w'と置き換えてください。 – greatwolf

+0

文字列の分割は、ここやウェブ全体で何回も尋ねられ、説明されています。 – warspyking

+0

以下の回答のいずれかが役に立つ場合は、それを受け入れてください。 –

答えて

2

が、これは動作します。

あなたはすべての出現をしたい場合は、この作品:

for token in string.gmatch(destination_number, "[^;]+") do 
    print(token) 
end 
+1

'a ;; c; d'はどうですか? 2番目の文字列は存在することを意味し、空の文字列と等しくなります。この状況はCSVファイル –

+0

@EgorSkriptunoffで非常に頻繁に発生します。 OPは問題をより正確に定義する必要があります。 – lhf

0

私はこのコードはあなたを助けることを願っています:

function split(source, sep) 
    local result, i = {}, 1 
    while true do 
     local a, b = source:find(sep) 
     if not a then break end 
     local candidat = source:sub(1, a - 1) 
     if candidat ~= "" then 
      result[i] = candidat 
     end i=i+1 
     source = source:sub(b + 1) 
    end 
    if source ~= "" then 
     result[i] = source 
    end 
    return result 
end 

local destination_number="2233334;555555;12321315;2343242" 

local result = split(destination_number, ";") 
for i, v in ipairs(result) do 
    print(v) 
end 

--[[ Output: 
2233334 
555555 
12321315 
2343242 
]] 

resultは、これらの数字を含むテーブルです。

関連する問題