- string.find : 주어진 대상(subject) 문자열 안에 있는 패턴을 검색한다.
- 리턴 : 패턴에 해당하는 부분의 시작 색인과 끝 색인
- string.find( 'hello world', 'world' ) --> 7 11
- string.match : find 함수와 비슷하지만 패턴을 발견한 위치를 반환하는 대신, 패턴에 맞는 대상 문자열의 일부분을 반환한다.
- string.match( 'hello world', 'hello' ) --> hello
- 패턴이 캡처를 가지고 있다면 string.match 함수는 캡처된 값들을 각각 별도의 반환값으로 반환한다.
- string.match( 'name = anna', '(%a+)%s*=%s*(%a+)') --> name anna
- string.gsub : 대상 문자열 안에 있는 패턴에 해당하는 모든 부분을 대체 문자열로 교체
- 매개변수 : 대상 문자열, 패턴, 대체할 문자열
- 세 번째 인수로 문자열 대신에 함수 또는 테이블을 사용할 수도 있다. 함수에 전달하는 인수는 캡처 값이며, 반환하는 값을 교체 문자열로 사용한다.
- string.gsub( 'lua is cute', 'cute', 'great' ) --> lua is great
- string.gmatch : 문자열에서 패턴과 일치하는 모든 부분을 훑어 나가는 (iterate over) 함수를 하나 반환한다.
words = {}
-- 주어진 문자열 s 안에 있는 모든 단어를 수거하는 처리.
for w in string.gmatch( s, '%a+' ) do
words[#words + 1] = w
end
- 특정 문자로 '시작'하는지 확인하기
a = 'hello world'
b = 'hello'
c = 'hi'
print( a:find( '^'..b) ) -- 1 5
print( a:find( '^'..c) ) -- nil
if a:find( '^'..b ) then
print( 'yes' )
else
print( 'no' )
end -- yes
- lua file system
- example from http://keplerproject.github.io/luafilesystem/examples.html
local lfs = require"lfs"
function attrdir (path)
for file in lfs.dir(path) do
if file ~= "." and file ~= ".." then
local f = path..'/'..file
print ("\t "..f)
local attr = lfs.attributes (f)
assert (type(attr) == "table")
if attr.mode == "directory" then
attrdir (f)
else
for name, value in pairs(attr) do
print (name, value)
end
end
end
end
end
attrdir (".")
- http://hisham.hm/2011/05/04/luas-and-or-as-a-ternary-operator/comments/#comments
- (cond) and a or b 로 흉내낼 수 있다. 하지만 a의 값이 nil이면 오동작하므로 주의.
require 'luanet' -- 실제로 luanet.dll이 필요하다.
luanet.load_assembly 'FbTransferWPF'
ViewModel = luanet.import_type 'FbTransferWPF.ViewModel'
print( ViewModel )