2014-06-13 3 views

답변

7

%p는 다음과 일치하는 C 함수 ispunct (C source v 5.2)에 의해 일치 :

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 ‘‘~’’ 

6

작은 스크립트 (man ispunct에서)을 찾을 수 있습니다 :

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

대답은 로캘에 따라 다릅니다, 직접적인 interf입니다 C 함수에 에이스.
실제로 Lua 함수와 비슷한 기능을하는 C 표준 함수가있는 경우 Lua 함수는 특정 경우를 보지 않고 C 함수, 사마귀 및 모두를 래핑합니다.
가 (이 이유의 일부입니다 file:read() 여전히 5.2 trouble reading text with embedded zeroes는, 어쩌면 5.3에있을 것이다있다) Amaden는 "C"로케일에 대한 좋은 답변을주고, ColonelThirtyTwo 확인 할 수있는 올바른 방법을 준 반면

현재 로케일를 들어, C 표준은 말한다 :

ispunct()을 : 어느 isspace와도 isalnum에 해당하는 문장 부호 문자의 로케일 특정 세트 중 하나 어떤 인쇄 문자의 ispunct 기능을 테스트합니다. "C" 로켈에서 ispunct는 이나 isalnum이 true가 아닌 모든 인쇄 문자에 대해 true를 반환합니다.

관련 문제