Lua'daki noktalama işaretini "%p"
birleştiren karakterlerin belgelerini bulamadım.Lua noktalama dizgisi örneğinde hangi karakterler bulunur (% p)?
cevap
%p
aşağıdaki maçları C fonksiyonu ispunct
(C source v 5.2) tarafından eşleştirilir:
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 ‘‘~’’
küçük komut dosyası (man ispunct
itibaren) onları bulmak için:
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][\]^_`{|}~
Cevap yerel ayar bağımlı, doğrudan bir interf C fonksiyonuna as.
Aslında, Lua işlevine benzer bir şey yapan bir C standart işlevi varsa, Lua işlevinin yalnızca belirli bir duruma bakmadan bile C işlevini, siğilini ve tümünü tamamıyla sardığı bellidir.
(Bu nedenle bir parçasıdır file:read()
hala 5.2 trouble reading text with embedded zeroes, hatta belki de 5.3 olacak vardır) Amaden "C" yerel ayar için iyi bir cevabım verdi ve ColonelThirtyTwo kontrol etmek doğru yolu verirken
yerele özgü, C standart sadece diyor ki:
ispunct()
: ne isspace ne de isalnum doğru olduğu noktalama karakterleri bir bölgeye özgü bir dizi biridir herhangi baskı karakteri için ispunct fonksiyon testleri. "C" yerel ayarında, ispunct, nespace ne de isalnum un doğru olmadığı her yazdırma karakteri için true değerini döndürür