区切り文字付きの区切り文字(lua)にsplit()関数を作成します。デフォルトはスペースです。 デフォルトは正常に動作しています。この問題は、関数にデリミタを付けると始まります。何らかの理由で、最後のサブストリングを戻しません。 機能:指定した区切り文字を持つ区切り文字を
function split(str,sep)
if sep == nil then
words = {}
for word in str:gmatch("%w+") do table.insert(words, word) end
return words
end
return {str:match((str:gsub("[^"..sep.."]*"..sep, "([^"..sep.."]*)"..sep)))} -- BUG!! doesnt return last value
end
私はこれを実行しよう:
local str = "a,b,c,d,e,f,g"
local sep = ","
t = split(str,sep)
for i,j in ipairs(t) do
print(i,j)
end
をし、私が手:
1 a
2 b
3 c
4 d
5 e
6 f
バグがどこにあるかを見つけ出すことはできません...
としてそれをエスケープしていない場合
%
のようなセパレータは、問題を引き起こす可能性があります。しかしパターンは '[^、] *、'です。 PS。宣伝用https://github.com/moteus/lua-split。 – moteusこれも参照してください:http://stackoverflow.com/questions/36957798/split-a-string-by-a-character-in-lua/36958689#36958689 – tonypdmtr