루아 문자열 | 루아 프로그래밍 3

루아 문자열

루아 문자열은 바이트의 시퀀스(Sequence)이며 불변 (immutable) 입니다.

또 UTF-8과 같은 유니코드도 사용할 수 있습니다.

이 세가지 특성은 다른 하이레벨 언어들과 비슷한데 역시 같은 스크립트 언어인 파이썬과 유사합니다.

루아 문자열
루아 문자열
myString = "Hello Lua"

print(myString)

>> Hello Lua

동적타이핑이라서 언어 타입설정이 필요없습니다. 변수에 그대로 문자열을 할당하면 됩니다.

문자열을 만들 때는 ” ” 큰 따옴표와 ‘ ‘ 작은 따옴표 둘다 사용할 수 있습니다.

문자열 기본조작

문자열의 기본 조작을 알아보겠습니다.

문자열 사이즈

사이즈를 측정하는 연산자는 #입니다.

myString = "Hello Lua"

print("size:" .. #myString)

>>size:9

바이트 기준으로 사이즈를 계산합니다.

myString = “안녕루아?” UTF-8 한글코드를 사용하면 한글자에 4바이트를 할당합니다.

문자열 연결(concatenate)

문자열의 연결은 .. 연산자를 사용합니다.

myString = "This is"

print(myString .. " Lua")

print("True " .. "Story")
This is Lua
True Story

.. 연산자가 다른 언어와 다른 부분에 유의합니다. 연산자는 그냥 구분하기 위한 기호일 뿐입니다.

이스케이프 시퀀스(escape sequence)

루아는 C언어와 비슷한 이스케이프 시퀀스를 사용합니다.

문자열 ” ” 따옴표를 제어문자열이라고 하는데 이 안에서 단순 문자열이 아니라 경고음이라던지 다음줄로 이동하는 등의 동작을 위해서 사용합니다. 말그대로 시퀀스를 escape 빠져나가다. 는 뜻입니다.

이스케이프 시퀀스내용
\abell
\bback space
\fform feed
\nnewline
\rcarriage return
\t horizontal tab
\v vertical tab
\\ backslash
\” double quote
\’ single quote

긴 문자열

긴 문자열은 [[ ]] 기호로 만들 수 있습니다. HTML 같이 태그 등을 그대로 가져와야 하는 경우 사용합니다.

longString = [[

    long string

    <html>
        <body>
            subcsctription
        </body>
    </html>
]]

print(longString)

형변환(Coercions)

형변환은 의식하지 않게 자동으로 변하는 것들이 많습니다. 그러므로 변하는 규칙들에 대하여 숙지해야합니다.

print(77 .. 23)

>> 7723

여기서 7723이 나오는 것은 숫자를 문자로 변환해서 연결했기 때문입니다.

묵시적으로 일어난 형변환인데 연산자 .. 가 있었습니다.

print("33" + 2)

>> 35

문자열 + 숫자는 숫자입니다. 연산자가 + 였습니다.

print(tonumber(" -5  "))
print(tonumber(" 10e3 "))
print(tonumber("20e"))
-5
10000.0
nil

문자열은 tonumber 로 명시적인 숫자 변경이 가능합니다.

print(tonumber("1111", 2))
print(tonumber("ff", 16))
print(tonumber("123", 8))
15
255
83

tonumber에 인수를 전달하면 진법에 따라 문자열로 쓰고 숫자로 바꿀 수 있습니다.

숫자로 변환되면 변수에 숫자로 저장할 수 있습니다. 문자열로 표기한 숫자와 계산이 가능한 타입으로써의 숫자와는 구분을 할 줄 알아야 합니다. 쉽게 헷갈리는 부분이기도 하죠.

tonumber의 반대는 tostring 입니다. 사용법은 반대로 뒤집으면 되겠죠? tostring(“7”) –> “7” 이 됩니다.

문자열 라이브러리

문자열은 항상 라이브러리와 같이 딸려옵니다. 루아도 예외가 아닌데요.

기본적인 것을 알아두면 좋습니다.

반복하기 rep

myString = string.rep("Hi!", 5)

print(myString)
Hi!Hi!Hi!Hi!Hi!

rep -> repetition 으로 문자열을 반복합니다.

소문자 대문자

myString1 = string.lower("Apple Juice")
myString2 = string.upper("Orange Juice")

print(myString1)
print(myString2)
apple juice
ORANGE JUICE

소문자 대문자 메소드입니다. 사용법이 다른 언어와도 비슷합니다.

요약

문자열에 대하여 다양한 메소드가 있고 표준출력에 사용할 수 있는 포매팅 지시자가 있습니다.

상세한 내용은 외부참조링크의 루아 문자열 공식 문서를 참조하시길 바랍니다.

외부참조링크

Lua 5.4 Reference 루아 문자열

Leave a Comment