答案是依赖于语言环境,它是C函数的直接接口.
实际上,如果有一个类似于Lua函数的C标准函数,那么几乎可以肯定Lua函数只包含C函数,疣和所有函数,即使没有查看具体情况.
(这是部分原因file:read()仍然是在5.2中读取带有嵌入零的文本的麻烦,甚至可能在5.3中有)
虽然Amaden为"C"语言环境提供了一个很好的答案,而ColonelThirtyTwo提供了检查当前语言环境的正确方法,但C标准只说:
ispunct():ispunct函数测试任何打印字符,该打印字符是特定于语言环境的标点符号集之一,其中isspace和isalnum都不为true.在"C"语言环境中,ispunct对于isspace和isalnum都不为true的每个打印字符都返回true
%p与C函数匹配ispunct(C源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 ‘‘~’’
Run Code Online (Sandbox Code Playgroud)
(来自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
-- !"#$%&'()*+,-./:;<=>?@[\]^_`{|}~
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1480 次 |
| 最近记录: |