2017-03-08 5 views
1
function exists(f) 
    filetry="" 
    local fileBuffer={} 

    for w in x:gmatch("%S+") do 
     table.insert(fileBuffer,w) 
    end 

    for i, v in ipairs(fileBuffer) do 
     filetry=filetry.."_"..v 
    end 

    f=filetry 

    if os.execute("test -e "..f) == true then 
     return true 
    else 
     return false 
    end 
end 

ich brauche Leerzeichen zu ändern so zu unterstreichen ich die Datei in termanal finden kann ich versucht haben, apis zu verwenden, aber es funktioniert nicht für mich wegen meinem Computer löscht es, nachdem es zu installieren. so brauche ich nur eine Funktion, die Räume machen, unterstreichen und verwenden Sie den termanal Testbefehl eine Dateigibt es eine Möglichkeit, Leerzeichen in einem String zu unterstreichen?

+0

Ich empfehle, Dinge wie '" test -e "..f' durch' ("test -e% s") zu ersetzen: format (f) 'um das Lesen zu erleichtern, wenn die Zeichenfolge länger wird und endet mit 8 Verkettungen in einer Codezeile. Es sollte auch ein bisschen schneller sein, wenn ich mich nicht irre. – DarkWiiPlayer

+0

Ich empfehle auch, 'if variable == true zu ändern, dann true zurückzugeben else return false end' Konstrukte mit einer einfachen' return Variable', oder wenn es eine Funktion ist, die mehr als ein Argument zurückgibt, speichert es zuerst in einer Variablen und tut ' lokales Ergebnis = os.execute (...); Ergebnis zurückgeben; '. Dies hält den Code weniger überladen und einfacher zu lesen. – DarkWiiPlayer

Antwort

3
str = str:gsub("%s+", "_") 
-- where `str` is the string you want to remove the spaces from. 
-- Replaces multiple consecutive space characters with single _. 
-- Remove the `+` to make it replace each space character with its own _. 

Beispiel zu finden:

print(("Hello world"):gsub("%s+", "_")) 
-- will print "Hello_world" 

EDIT: Beachten Sie, dass string.gsub() erzeugt ein neue Zeichenkette anstatt die alte zu ändern, weshalb in meinem ersten Beispiel die Reassignation str = str:gsub... notwendig war.

Verwandte Themen