루아 문자열
목차
루아 문자열은 바이트의 시퀀스(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 빠져나가다. 는 뜻입니다.
이스케이프 시퀀스 | 내용 |
\a | bell |
\b | back space |
\f | form feed |
\n | newline |
\r | carriage 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
소문자 대문자 메소드입니다. 사용법이 다른 언어와도 비슷합니다.
요약
문자열에 대하여 다양한 메소드가 있고 표준출력에 사용할 수 있는 포매팅 지시자가 있습니다.
상세한 내용은 외부참조링크의 루아 문자열 공식 문서를 참조하시길 바랍니다.