비주얼노벨 강좌

3.2 문자열


루아에서의 문자열내에서 글자에 대한 인덱싱은 1부터 시작한다. (C언어와 같이 0 이 아니다. 헷갈리지 말 것.)
음수 인덱싱도 허용하지만, 이때는 문자열의 맨 끝부터 역으로 인덱싱을 하게 된다. (ex. -1 은 문자열의 맨 마지막 문자를 나태냄.)
두개의 문자열의 병합은 ".." 연산자를 사용한다.


아래는 두개의 문자열을 합쳐 출력하는 예다.


 a = "necrosen"
 b = "멍청이"
 c = a..b 
-- a값과 b값을 병합
 print(c) -- "necrosen멍청이" 가 출력된다.


3.2.1
문자열 제어 함수들


이 라이브러리는 문자열 관리를 위한 검색, 부분 문자열의 추출, 패턴 대입등 등을 지원하는 일반 함수들을 제공한다.
문자열 라이브러리의 모든 함수는 테이블 string(스트링) 내에 모두 담겨있다.


#1.
string.byte (s, [, i])


문자열 s의 i번째 문자의 내부 숫자로 표현된 코드(ex. 아스키 코드)를 반환
한다.
만일 i를 지정하지 않으면 1로 간주처리가 된다. i는 물론 음수로 지정될 수 있다.


#2.
string.char (i1, i2, ...)


0 이상의 정수만을 인자로 받는다. 각각의 숫자가 나타내는 코드에 해당되는 문자를 반환한다.


#3.
string.find (s, pattern [, init [, plain]])


문자열 s내에서 pattern에 가장 첫번째로 맞는 부분을 찾아 반환
한다.
만약 한개를 찾았다면 find()함수는 일치점의 시작과 끝을 나타내는 s의 인덱스들를 반환한다. 찾지 못하면 nil을 반환한다.


만약 pattern 문자열내에 "캡쳐" 옵션이 지정되어 있다면(string.gsub 참조), 캡쳐된 문자열들도 반환값에 포함되어 반환된다.


init 인자는 어디서부터 검색을 시작할 것인지에 대한 s 문자열내의 인덱스를 지정한다. 지정하지 않으면 1로 간주되며, 음수지정도 가능하다.


plain 인자의 값을 true로 놓으면 패턴 매칭 기능을 끄는 효과가 있다.
이것은 아주 평범한(plain) 부분 문자열을 검색하는 명령이 되며, pattern 인자내에 들어있는 값들은 무시된다.
만일 plain 인자를 true로 지정하면 init도 반드시 지정해야 한다는 점에 주의해라. plain은 지정하지 않으면 당연히 false로 간주된다.


#4.
sting.len (s)


문자열의 길이를 반환한다.
""(빈 문자열)은 0을 반환한다. 첨부된 0값갯수포함된다.
그러므로 예를 들면 "a00b00c"의 길이는 5가 된다.


#5.
string.lower(s)


주어진 문자열을 모두 소문자로 바꾸고 그 결과 문자열의 복사본을 반환한다. (원본은 바뀌지 않는다.)
대소문자에 대한 구분은 현재 로케일 설정을 따른다.


#6.
string.rep (s, n)


문자열 s를 n번 반복하여 모두 병합한 값을 반환
한다.


#7.
string.sub (s, i [, j])


문자열 s내에서 i에서 시작하고 j에서 끝나는 부분에 대한 부분 문자열을 반환
한다.
i와 j는 음수 지정이 가능하다. j를 지정하지 않으면, -1로 간주된다. (즉, i에서 끝까지의 영역을 나타내게 된다.)


여러가지 지정을 예를 들면, 만일 문자열 s의 길이 j 만큼의 접두어를 때어내려면, string.sub(s, 1, j)라고 지정하면 되며,
string.sub(s, -i)는 문자열 s에서 i길이 만큼의 접미어를 때내는 효과가 있다.


#8.
string.upper(s)


문자열 내의 모든 소문자들을 대문자로 바꾼 결과를 반환한다. 대소문자에 대한 구분은 현재 로케일 설정을 따른다.


#9.
string.format(formatstring, e1, e2, ...)


첫번째 인자(반드시 문자열이어야 함)로 주어지는 정의를 따라서 다양한 수의 인자들을 잘 포맷한 결과물을 반환한다.
C 언어에서 printf() 함수를 생각하면 된다. 내부 포맷룰도 같지만, 다음과 같은 차이가 있다.


- *, l, L, n, p, h는 지원되지 않는다.
- q 옵션이 제공된다.


  string.format('%q', 'a string with "quotes" and n new line')


다음과 같이 나올 것이다.


 "a string with "quotes" and
 newline"


- c, d, E, e, f, g, G, i, o, u, X, x와 같은 모든 옵션은 숫자를 적용하여 사용하며, q와 s만 문자열을 적용하여 사용된다.


#10.
string.gfind (s, pat)


#11.
string.gsub (s, pat, repl [, n])


[출처] 아방스 ( http://avangs.info/zbxe/S_gameXP/ ) by Mania(Necrosen).

Comment '6'
  • ?
    샘물 2009.01.10 11:20
    어렵네요 여기만 .
  • ?
    나뚜루 2009.01.10 12:01
    문자열 하나하나에 함수를 대입할 수는 없을까요.. 루비에선 가능한데..
  • ?
    [Dark].Angel 2009.01.10 21:54
    흠... 역시 c언어랑 밀접한 관련이 있네요 ㅎㅎ...
  • ?
    Mania 2009.01.11 08:43
    C/C++ 과 관련된 스크립트가 루아입니다.
  • ?
    [Dark].Angel 2009.01.12 16:20
    ㅎㅎ.... 루아 거의 마스터를 해버려야 겠군요 ㅎㅎ.. 재미있을 듯
  • ?
    후르츠파르페 2009.01.21 02:08
    변수에 문자가 지정되었던가..
    만진지 오래되서 기억이 가물가물..

List of Articles
분류 제목 글쓴이 날짜 조회 수
Ren'Py 렌파이 관련 유용한 링크 모음 3 file 습작 2012.12.02 17571
Nekonovel 네코노벨 관련 유용한 링크 모음 1 file 습작 2012.11.19 11944
Neko:Lua 마인크래프트에서 루아언어를 써 Boa요! 2 철쭉 2012.07.21 4183
Neko:Lua Lua for Windows 1 루아마당 2010.08.08 5555
Neko:Lua LUA 란 무엇인가? 6 루아마당 2010.08.08 7224
Neko:Lua 루아의 메모리 관리 방식 루아마당 2010.08.08 5471
Neko:Lua 루아 스크립트를 1 무뇌인 2010.04.20 5923
Neko:Lua 비쥬얼 C++에 루아 연동시키기- file Saber 2010.01.02 7976
Neko:Lua 좀비서바이벌 1.11b 버전 Lua 스크립트 16 판져중위 2009.11.30 9279
Neko:Lua 루아에 잘못 알고계신분이 있는거 같아서 몇줄 적습니다. 16 코르뉴 2009.09.25 8081
Neko:Lua 루아가뭔가요 10 영웅 2009.09.24 6176
Neko:Lua 루아스크립트란 무엇인가? 9 행운 2009.06.11 8444
Neko:Lua 루아가 뭐죠? 11 sooe 2009.06.09 7204
Neko:Lua 루아에 대하여 궁금한점 18 아하!잘봤어요. 2009.05.04 7138
Neko:Lua 루아의 재미있는 기능! 15 엠피군 2009.01.18 7675
Neko:Lua 루아 스크립트 기초 강좌 2부 5 백호 2009.01.12 7755
Neko:Lua 루아 스크립트 기초 강좌 1부 6 백호 2009.01.12 13616
Neko:Lua Lua 시작 [펌] 6 나뚜루 2009.01.10 7431
Neko:Lua lua table 사용방법 - 개인적으로 배우고 있는것. [펌] 3 나뚜루 2009.01.10 7556
Neko:Lua 3부. 변수 - 3.2 문자열 6 Mania 2009.01.10 5464
Neko:Lua 3부. 변수 - 3.1 숫자 4 Mania 2009.01.10 5284
Neko:Lua 2부. 데이터 타입 3 Mania 2009.01.10 6257
Board Pagination Prev 1 2 Next
/ 2