비주얼노벨 강좌

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 Lua for Windows 1 루아마당 2010.08.08 5555
Neko:Lua 루아의 메모리 관리 방식 루아마당 2010.08.08 5471
Neko:Lua 3부. 변수 - 3.2 문자열 6 Mania 2009.01.10 5464
Neko:Lua 3부. 변수 - 3.1 숫자 4 Mania 2009.01.10 5284
VNAP Vnap 제대로 게임 한 번 만들어 보자!(브이냅 기초) 4 file FNS키리토 2013.02.14 5099
VNAP Vnap 강좌 제 2 편! 작은하마 길들이기 (CG) 9 file FNS키리토 2013.01.28 5068
기타 제작툴 소개 : Novelty란 무엇인가? 4 file 습작 2013.05.09 4553
Neko:Lua 마인크래프트에서 루아언어를 써 Boa요! 2 철쭉 2012.07.21 4183
VNAP vnap으로 뭐든 해보자! 1 편! 15 file FNS키리토 2013.01.10 4177
Vasilriot 바실리어트의 최신 버전 file 하늘바라KSND 2013.05.11 3977
Vasilriot 바실리어트 스크립트 정리하기. file 하늘바라KSND 2012.11.10 3501
Neko:응용 네코노벨 미니게임 관련 스크립트-글라스 스노우 하늘바라KSND 2013.06.27 3359
Vasilriot 바실리어트 버튼 사용하기 file 하늘바라KSND 2012.12.21 3160
Vasilriot 해상도 조절에 관한 간단한 고찰 2 하늘바라KSND 2013.05.18 3128
Vasilriot 바실리어트 기본 설정하기 - 폰트 :: font.ini file 하늘바라KSND 2013.05.11 3016
Vasilriot 노가다를 줄여주는 명령어, 인라인 사용하기. 2 하늘바라KSND 2013.02.18 2944
Vasilriot 바실리어트 사용할 때 조심해야 할 것 :: 글자수 제한(명령어 오류)(2013.05.15수정) file 하늘바라KSND 2013.05.09 2750
Vasilriot 장면 전환할 때 사용할 '장막효과'를 구현해보자. 하늘바라KSND 2013.05.09 2701
Vasilriot 바실리어트에서 지원하는 vr팩. 언팩이 가능할까? 하늘바라KSND 2013.05.11 2646
TyranoBuilder TyranoBuilder Visual Novel Studio Pro버전 한글패치 6 file 습작 2016.05.28 2179
Board Pagination Prev 1 2 3 Next
/ 3