2016-05-24 14 views
2

Input:string.gsub für jeden als eigenständige Variable Rückkehr ersetzen Ergebnis

stringdata = '{"abcd://ipaddress/directory1/Images/subfolder/Image0.png","abcd://ipaddress/directory1/Images/subfolder/Image1.png","abcd://ipaddress/directory1/Images/subfolder/Image2.png","abcd://ipaddress/directory1/Images/subfolder/Image3.png","abcd://ipaddress/directory1/Images/subfolder/Image4.png"}' 

Source Code

string.gsub(stringdata, "(.....................%w%w................................%w)",print) 

Stromausgang:

abcd://ipaddress/directory1/Images/subfolder/Image0.png 
abcd://ipaddress/directory1/Images/subfolder/Image1.png 
abcd://ipaddress/directory1/Images/subfolder/Image2.png 
abcd://ipaddress/directory1/Images/subfolder/Image3.png 
abcd://ipaddress/directory1/Images/subfolder/Image4.png 

Erwartete Ausgang (wo jeder der unten könnte in einer anderen Variablen gespeichert werden)

directory1/Images/subfolder/Image0.png  
directory1/Images/subfolder/Image1.png 
directory1/Images/subfolder/Image2.png 
directory1/Images/subfolder/Image3.png  
directory1/Images/subfolder/Image4.png 
+0

was ist falsch mit der Frage? Warum runter abgestimmt? –

+0

Es ist nicht klar, was Ihr Problem ist, da Sie nicht einmal eine Frage stellen. Was genau ist das Problem, das du lösen willst? Was hat dich dazu gebracht, dieses Muster zu benutzen? Die Beschreibung der gewünschten Ausgabe entspricht nicht der Beschreibung des Problems. Und ehrlich gesagt bin ich mir nicht einmal sicher, was der Titel deiner Frage mit irgendetwas zu tun hat. –

+0

ok, ich werde die ganze Frage überarbeiten und wieder posten (wenn ich etwas Zeit habe), was für alle und besonders für diese Community-Mitglieder verständlich sein wird. Damit alle davon profitieren. (Ich behalte ist einfacher, so dass jeder leicht verstehen wird, indem man es einfach anschaut.) –

Antwort

1

Mit so vielen . in Ihrem Muster, ist es schwer zu lesen und unklar, was Ihr Zweck ist.

Stattdessen ein Muster verwenden, die auf das spezifische Format ist:

string.gsub(stringdata, "%w+://%w+/(%w+/%w+/%w+/%w+%.png)", print) 

Auf diese Weise ist es viel klarer, was jeder %w+ darstellt.


Um das Ergebnis zu speichern, verwenden Sie die falsche Funktion. string.gsub wird für die Ersetzung verwendet, verwenden Sie stattdessen:

for m in string.gmatch(stringdata, "%w+://%w+/(%w+/%w+/%w+/%w+%.png)") do 
    print(m) 
    -- do whatever with m 
end 
+0

Es gibt so viele Punkte, weil Lua es nicht einfacher zu verstehen macht. und mehr über ... Ihre Lösung druckt nur und speichert nicht in einer anderen Variable .. aber danke für den Vorschlag ... Ich erkannte die Verwendung von Zeichen innerhalb des Musters in 'gsub', bevor Sie Ihren Kommentar lesen. –

+0

Sorry, 'm' druckt nichts! 'm = '' für m in string.gmatch (radarimgs,"% w +: //% w +/(% w + /% w + /% w + /% w +% .png) ") drucke (type (m)) end Drucken (Typ (m)) Drucken (string.len (m)) ' ' –

+0

@CommonMan Überprüfen Sie den Code selbst: http://ideone.com/TMqXVm –