2017-08-12 13 views
0

私はLuaを学んでおり、Pythonに関するいくつかの知識を持っており、Pythonのような文字列を置き換えたいが、見つけられない正確な翻訳機能PythonをLuaに変換する:リスト内の文字列を置換する

私はLuaの中でこれを作りたい:

l = ["#01","#02", "#03"] 
print(l) 

for i in range(len(l)): 
    l[i]=l[i].replace("#","") 
    #print (i) 

print (l) 

答えて

1

まずPythonでリストの内包表記を使用します:あなたは本当に場所にリストを更新する必要がある場合は

>>> l = ["#01", "#02", "#03", "04"] 
>>> l = [s.replace('#', '') for s in l] 
>>> print(l) 
['01', '02', '03', '04'] 

を:

>>> l[:] = [s.replace('#', '') for s in l] 

ルアでは、forを使用してリスト/配列/テーブルを反復処理し、を使用できます部分文字列を置き換えるために:string.gsub()のが、魔法の文字なし

> l = {"#01", "#02", "#03", "04"} 
> for k, v in pairs(l) do print(k, v) end 
1 #01 
2 #02 
3 #03 
4 04 

> for k in next,l do l[k] = l[k]:gsub("#", "") end 
> for k, v in pairs(l) do print(k, v) end 
1 01 
2 02 
3 03 
4 04 
+0

'nil'がnext' – tonypdmtr

+0

'後に冗長です@ tonypdmtr:それを指摘してくれてありがとう。 – mhawke

1

アナログ(無地交換)

function string:replace(pattern, replace_string, ...) 
    return (self:gsub(
     pattern:gsub("%p","%%%0"), 
     replace_string:gsub("%%","%%%%"), 
     ... 
    )) 
end 

例:

print(string.replace("25%", "%", " percent")) --> 25 percent 
print(("n>=0"):replace(">=", "≥"))    --> n≥0 
s = "#01"; print(s:replace("#", ""))   --> 01 
関連する問題