2014-06-13 6 views

Antwort

7

%p durch die C-Funktion angepasst ist ispunct (C source v 5.2), die die folgenden Spiele:

041 ‘‘!’’  042 ‘‘ ’’  043 ‘‘#’’  044 ‘‘$’’  045 ‘‘%’’ 
046 ‘‘&’’  047 ‘‘’’’  050 ‘‘(’’  051 ‘‘)’’  052 ‘‘*’’ 
053 ‘‘+’’  054 ‘‘,’’  055 ‘‘-’’  056 ‘‘.’’  057 ‘‘/’’ 
072 ‘‘:’’  073 ‘‘;’’  074 ‘‘<’’  075 ‘‘=’’  076 ‘‘>’’ 
077 ‘‘?’’  100 ‘‘@’’  133 ‘‘[’’  134 ‘‘\’’  135 ‘‘]’’ 
136 ‘‘^’’  137 ‘‘_’’  140 ‘‘‘’’  173 ‘‘{’’  174 ‘‘|’’ 
175 ‘‘}’’  176 ‘‘~’’ 

(Von man ispunct)

6

Ein kleines Skript, sie zu finden:

for i=0,255 do 
    if string.match(string.char(i), "%p") then 
     io.write(string.char(i)) 
    end 
end 
io.write("\n") 

-- $ luajit test.lua 
-- !"#$%&'()*+,-./:;<=>[email protected][\]^_`{|}~ 
9

Die Antwort ist locale abhängig, es ist eine direkte interf Ace zur C-Funktion.
Eigentlich, wenn es eine C-Standardfunktion gibt, die der Lua-Funktion ähnlich ist, ist es fast sicher, dass die Lua-Funktion nur die C-Funktion, Warzen und alles umschließt, auch ohne den speziellen Fall zu betrachten.
(Dies ist Teil des Grundes, file:read() hat noch trouble reading text with embedded zeroes in 5.2, vielleicht sogar in 5.3 haben)

Während Amaden eine gute Antwort für den locale „C“ gab, und ColonelThirtyTwo gab die richtige Art und Weise zu überprüfen für die aktuellen locale, sagt der C-Standard nur:

ispunct(): die ispunct Funktionstests für jeden Druck Zeichen, das einer von einem locale-spezifischem Satz von Satzzeichen, für die weder isspace noch isalnum wahr ist. Im Gebietsschema "C" gibt ispunct für jedes Druckzeichen, für das weder issspace noch isalnum true ist, den Wert true zurück

Verwandte Themen