문자열

*이 콘텐츠는 AI(베타)를 사용해 번역되었으며, 오류가 있을 수 있습니다. 이 페이지를 영어로 보려면 여기를 클릭하세요.

문자, 숫자 및 기호와 같은 시퀀스의 데이터 형식은 문자열 데이터 형식입니다. 이것은 대부분의 텍스트 기반 정보를 저장하는 데 사용되는 데이터 형식입니다.

문자열 선언

문자열 변수를 선언하려면 따옴표를 문자열 주위에 둡니다. 더블 따옴표( " )를 사용하는 것이 더 일반적이지만, 단일 따옴표( ' )도 작동합니다. 문자열에 단일 또는 더블 따옴표를 포함하려면 다른 종류의 따옴표( )


local string1 = "Hello world!"
print(string1) --> 안녕하세요, 세계!
local string2 = 'Hello "world"!'
print(string2) --> Hello "world"!

싱글 따옴표와 더블 따옴표를 문자열에 포함하거나 여러 줄 문자열을 만들려면 두 번째 따옴표를 사용하여 선언합니다.


local string1 = [[Hello
world!
Hello "world"!
Hello 'world'!]]
print(string1)
--> 안녕
--> 세계!
--> 안녕하세요 "세계"!
--> Hello 'world'!

필요한 경우 문자열에 동일한 기호가 있는 시작 및 끝 부분에 여러 개의 브라켓을 중첩할 수 있습니다.If necessary, you can nest multiple brackets inside a string using the same number of equal signs in both the beginning and ending bracket:


local string1 = [=[Hello
[[world!]]
]=]
print(string1)
--> 안녕
--> [[world!]]

문자열 결합

문자열을 결합하려면 문자열을 두 개의 따옴표( .. )로 연결하십시오. 문자열을 연결하면 공간을 삽입하지 않으므로 이전/다음 문자열 시작/끝에 공간을 포함하거나 두 문자열 사이에 공간을 포함하여야 합니다.


local hello = "Hello"
local helloWithSpace = "Hello "
local world = "world!"
local string1 = hello .. world
local string2 = helloWithSpace .. world
local string3 = hello .. " " .. world
print(string1) --> Helloworld!
print(string2) --> 안녕하세요, 세계!
print(string3) --> Hello world!

print() 명령은 여러 인수를 가져와 공간과 결합하므로 스페이스를 생성하기 위해 대신 , 대신 ,를 사용할 수 있습니다.


local hello = "Hello"
local world = "world"
local exclamationMark = "!"
print(hello .. world .. exclamationMark) --> Helloworld!
print(hello, world .. exclamationMark) --> 안녕하세요, 세계!
print(hello, world, exclamationMark) --> Hello world !

문자열 변환

문자열을 숫자로 변환하려면 tonumber() 함수를 사용하십시오. 문자열에 숫자 표현이 없으면 tonumber()nil을 반환합니다.


local numericString = "123"
print(tonumber(numericString)) --> 123
local alphanumericString = "Hello123"
print(tonumber(alphanumericString)) --> nil

문자열 탈출

이중 따옴표 문자열 선언을 탈출하고 거의 모든 문자를 삽입하려면 백슬래시( \ )를 문자 뒤에 붙입습니다. 예를 들어:

  • 단일 인용구 문자열에 단일 인용구를 삽입하려면 \' 를 사용합니다.
  • 이중 따옴표를 이중 따옴표 문자열에 삽입하려면 \" 를 사용합니다.

local string1 = 'Hello \'world\'!'
print(string1) --> 안녕하세요 '월드'!
local string2 = "Hello \"world\"!"
print(string2) --> Hello "world"!

백슬래시를 따르는 특정 문자는 특수 문자를 생성하며 탈출된 문자는 생성되지 않습니다.

  • 새 줄을 삽입하려면 \n 를 사용합니다.
  • 가로 탭을 삽입하려면 \t 를 사용합니다.

local string1 = "Hello\nworld!"
print(string1)
--> 안녕
--> 세계!
local string2 = "Hello\tworld!"
print(string2) --> Hello world!

문자열 변환

Luau는 문자열 변환 기능을 지원합니다. 이 기능을 사용하면 식을 문자열에 삽입할 수 있습니다. 백탭( ` )을 사용하여 변환된 문자열을 선언한 다음 컬리 브라켓 내에 식을 추가합니다.


local world = "world"
local string1 = `Hello {world}!`
print(string1) --> Hello world!

변수는 가장 일반적인 용도지만, 수학을 포함한 모든 식을 사용할 수 있습니다.


local world = "world"
local number = 1
local letters = {"w", "o", "r", "l", "d"}
local string1 = `Hello {world}, {number} time!`
local string2 = `Hello {world}, {number + 1} times!`
local string3 = `Hello {table.concat(letters)} a third time!`
print(string1) --> 안녕하세요, 1번!
print(string2) --> 안녕하세요, 2 번!
print(string3) --> Hello world a third time!

백킹, 컬리 브라켓 및 백슬래시에 대해 일반적인 탈출 규칙이 적용됩니다:


local string1 = `Hello \`\{world\}\`!`
print(string1) --> Hello `{world}`!

수학 변환

문자열에서 수학 연산을 수행하면 Luau가 자동으로 문자열을 숫자로 변환합니다. 문자열에 숫자 표현이 없으면 오류가 발생합니다.


print("55" + 10) --> 65
print("55" - 10) --> 45
print("55" * 10) --> 550
print("55" / 10) --> 5.5
print("55" % 10) --> 5
print("Hello" + 10) --> print("Hello" + 10):1: attempt to perform arithmetic (add) on string and number

비교

문자열에 있는 모든 문자열을 비교하려면 <, <=, > 및 1>


print("Apple" < "apple") --> 예
print("Banana" < "apple") --> true (B는 ASCII의 뒤에 있습니다)
print("number100" < "number20") --> true

문자열 패턴 참조

문자열 패턴은 Library.string.일치() 및 string.match()와 같은 문자를 사용하여 더 길은 문자열의 조각 또는 하위 문자열을 찾을 수 있는 조합입니다.

직접 매치

직접 일치는 Luau 함수에서 사용할 수 있습니다 string.match() , 마법 문자 외에는 Roblox 내에서 단어를 검색합니다. 예를 들어, 다음 명령은 문자열 내에서 Roblox 를 검색합니다.


local match1 = string.match("Welcome to Roblox!", "Roblox")
local match2 = string.match("Welcome to my awesome game!", "Roblox")
print(match1) --> Roblox
print(match2) --> nil

캐릭터 클래스

문자 클래스는 더 복잡한 문자열 검색에 필수적입니다. 문자 클래스를 사용하여 알 수 없는 문자 속성을 검색하는 것이 아닌 문자 속성을 검색하는 것을 포함하여 문자 속성 을 검색할 수 있습니다(예: 글자, 숫자, 2>공백2>, 5>따

다음 표에서는 Luau 문자 패턴의 공식 문자 클래스를 보여줍니다.

클래스대표자를 나타냅니다.예시 매치를 나타냅니다.
.모든 캐릭터32kasGJ1%fTlk?@94
%a대문자 또는 소문자 문자aBcDeFgHiJkLmNoPqRsTuVwXyZ
%l대문자를 작게 쓰는 경우abcdefghijklmnopqrstuvwxyz
%u상대 자를 위한 대문자ABCDEFGHIJKLMNOPQRSTUVWXYZ
%d모든 숫자(번호)0123456789
%p모든 구분 기호 문자!@#;,.
%w문자 또는 숫자aBcDeFgHiJkLmNoPqRsTuVwXyZ0123456789 입니다.
%s공간 또는 백스페이스 문자, \n, \r
%c특수 콘트롤 캐릭터
%x16진 문자0123456789ABCDEF
%z %zNULL 문자 ( \0 )

단일 문자 클래스, 예를 들어 %a%s 의 경우, 해당 상위 케이스 문자는 클래스의 "반대"를 나타냅니다. 예를 인스턴스, %p 는 중지점을 나타내는 문자를 나타내고 1> %P1> 는 모든 문자를 나

마법 문자

패턴에 있는 12개의 "마법 문자"가 있습니다.

$%^:*)())
.[ ]]+-:?

마법 문자를 검색하고 마법 문자를 탐색하려면 % 기호를 사용하십시오. 예를 들어, roblox.com을 검색하려면 **** (이전에 대시 기호로 시작) . 를 사용하십시오.


-- roblox.com은 "roblox#com"과 일치하는데, 왜냐하면 이 기간은 "모든 캐릭터"로 해석됩니다.
local match1 = string.match("What is roblox#com?", "roblox.com")
print(match1) --> roblox#com
-- 문자열 %로 구분 문자를 해석하도록 하기 위해 문자열을 벗어나십시오.
local match2 = string.match("I love roblox.com!", "roblox%.com")
print(match2) --> roblox.com

앵커

문자열의 시작 또는 끝에 있는 패턴을 검색하려면 ^$ 기호를 사용합니다.


local start1 = string.match("first second third", "^first") -- 처음에 "일치"가 있기 때문에 일치합니다.
print(start1) --> 첫 번째
local start2 = string.match("third second first", "^first") -- 시작 부분에 "첫 번째"가 없기 때문에 일치하지 않습니다.
print(start2) --> 없음
local end1 = string.match("first second third", "third$") -- 종료"세 번째"가 있기 때문에 일치합니다.
print(end1) --> 세 번째
local end2 = string.match("third second first", "third$") -- 종료"3"이 없어서 일치하지 않습니다.
print(end2) --> nil

또한 모든 크기의 패턴을 완전한 문자열만 일치하도록 하려면 ^$ 를 함께 사용할 수 있습니다.


-- 전체 문자열에 일치하도록 ^ 및 $를 사용하는 것
local match1 = string.match("Roblox", "^Roblox$") -- Roblox가 전체 문자열이기 때문에 일치합니다(평등)
print(match1) --> Roblox
local match2 = string.match("I play Roblox", "^Roblox$") -- 시작 및 종료"Roblox"가 없기 때문에 일치하지 않습니다.
print(match2) --> 없음
local match3 = string.match("I play Roblox", "Roblox") -- Roblox가 "나는 Roblox를 플레이"에 포함되어 있기 때문에 일치합니다.
print(match3) --> Roblox

클래스 모디фика터

자체적으로 캐릭터 클래스는 문자열에 있는 문자 하나 만 일치합니다. 예를 인스턴스, 다음 패턴 ( "%d" )은 왼쪽에서 오른쪽으로 문자열을 읽기 시작하고, 첫 번째 숫자 ( 1> 21> )를 찾아 중지합니다.


local match = string.match("The Cloud Kingdom has 25 power gems", "%d")
print(match) --> 2

모든 캐릭터 클래스에서 모디фика터 를 사용하여 결과를 제어할 수 있습니다.

측정기의미
+이전 문자 클래스 1개 이상과 일치
-:이전 문자 클래스 중 가능한 한 적합
*)이전 문자 클래스 0개 이상과 일치
?이전 문자 클래스 1개 이하와 일치
%n %1>n 이 19 사이에 있는 경우, 캡처된 문자열과 일치하는 하위 문자열을 찾습니다.
%bxy)균형 잡힌 캡처는 다음과 같은 것을 일치시킵니다: x, y 및 모든 것 사이에 (예를 들어, %b()는 부모 문자열 및 모든 것 사이에 일치)

같은 패턴에 모ди파이어를 추가하는 경우 ( "%d+" 대신에 "%d" 를 출력하지 않습니다), 다음과 같은 출력을 생성합니다 25 대신에 1> 21> :


local match1 = string.match("The Cloud Kingdom has 25 power gems", "%d")
print(match1) --> 2
local match2 = string.match("The Cloud Kingdom has 25 power gems", "%d+")
print(match2) --> 25

클래스 세트

Sets 는 단일 캐릭터 클래스가 전체 작업을 수행할 수 없는 경우 사용해야 합니다. 예를 인스턴스, 다음과 같은 경우 %l %l 를 사용하여 모든 대문자 문자( %p )를 일치하도록 하십시오.

세트는 괄호 [] 로 정의됩니다. 다음 예에서 세트를 사용하는 것과 세트를 사용하지 않는 것의 차이를 알아보십시오. "[%l%p]+" 을 사용하는 것과 없음 을 사용하는 것의 차이를 알아보십시오.


local match1 = string.match("Hello!!! I am another string.", "[%l%p]+") -- 집합
print(match1) --> 안녕하세요!!!
local match2 = string.match("Hello!!! I am another string.", "%l%p+") -- 설정되지 않은
print(match2) --> o!!!

첫 번째 명령(set)은 Luau가 모든 대문자 문자와 띄어쓰기를 찾도록 하는 첫 번째 명령을 설정합니다. 전체 세트 후에 추가된 + 측정기를 통해 모든 대문자 문자(ello), 스페이스에 도달할 때 중지됩니다.

두 번째 명령(非設定)에서 + 수량 측정기는 앞에 있는 %p 클래스에만 적용되므로 Luau는 시리즈의 첫 번째 하위 문자( o )만 가져오기 전에 2>p2> 수량 측정기만 가져옵니다( 5>o5> ).

캐릭터 클래스와 마찬가지로 집합은 스스로의 반대가 될 수 있습니다. 이는 설정시작 부분에 ^ 문자를 추가하여 직접 열기 [ 후에 모든 캐릭터 을

또한 시작 및 끝 캐릭터 사이의 전체 범위를 찾을 수 있는 범위를 지원합니다. 이 기능은 Lua 5.1 매뉴얼에 자세히 설명되어 있습니다.

문자열 캡처

문자열 캡처 는 패턴 내의 하위 패턴입니다. 이들은 부모 따옴표 () 안에 묶여 있으며, 일치하는 하위 문자열을 가져오고 변수에 저장하는 데 사용됩니다. 예를 들어, 다음 패턴에는 두 개의 하


local pattern = "(%a+)%s?=%s?(%d+)"
local key1, val1 = string.match("TwentyOne = 21", pattern)
print(key1, val1) --> TwentyOne 21
local key2, val2 = string.match("TwoThousand= 2000", pattern)
print(key2, val2) --> 2000
local key3, val3 = string.match("OneMillion=1000000", pattern)
print(key3, val3) --> OneMillion 1000000

이전 패턴에서 두 개의 ? 클래스 모두에 따르는 %s 측정기는 안전한 추가 기능입니다, 왜냐하면 공간이 서로 다른 두 개의 클래스 모두에 필요한 공간을 만들기 때문입니다. 즉, 한 개 이상의 공간이 서로 다른 기호 주위에 없으

문자열 캡처는 다음 예와 같이 중첩 할 수도 있습니다.


local places = "The Cloud Kingdom is heavenly, The Forest Kingdom is peaceful"
local pattern = "(The%s(%a+%sKingdom)[%w%s]+)"
for description, kingdom in string.gmatch(places, pattern) do
print(description)
print(kingdom)
end
--> 클라우드 왕국은 천국입니다
--> 클라우드 왕국
--> 숲의 왕국은 평화로웠습니다
--> Forest Kingdom

이 패턴 검색은 다음과 같이 작동합니다:

Library.문자열.gmatch() 이식은 부모 쌍의 정의한 전체 설명 패턴에 대해 일치를 찾습니다. 이 작업은 첫 번째 쉼표에서 중지되고 다음을 캡처합니다.

#패턴점령
1)(왕국의 %s%) 이상Cloud Kingdom는 천국입니다

성공적인 첫 번째 캡처를 사용하여 이터이터는 다음과 같은 "왕국" 패턴을 정의한 내부 쌍의 패턴에서 일치를 검색합니다. 이 중첩 패턴은 팔로잉단순히 캡처합니다.

#패턴점령
2%a+%sKingdom)클라우드 왕국

다음을 검색하고 정규화된 문자열을 반환합니다.itteriter 백업 및 전체 문자열 검색을 계속합니다.itteriter

#패턴점령
3(왕국의 %s%) 이상숲의 왕국은 평화로웠습니다
4개%a+%sKingdom)숲의 왕국

위의 모든 것 외에도 빈 캡처 ( () )가 있습니다. 캡처가 비어 있으면 문자열의 위치가 캡처됩니다.


local match1 = "Where does the capture happen? Who knows!"
local match2 = "This string is longer than the first one. Where does the capture happen? Who knows?!"
local pattern = "()Where does the capture happen%? Who knows!()"
local start1, finish1 = string.match(match1, pattern)
print(start1, finish1) --> 1 42
local start2, finish2 = string.match(match2, pattern)
print(start2, finish2) --> 43 84

이러한 특수 점령은 일반 점령과 중첩될 수 있습니다.


local places = "The Cloud Kingdom is heavenly, The Forest Kingdom is peaceful."
local pattern = "The (%a+()) Kingdom is %a+"
for kingdom, position in string.gmatch(places, pattern) do
print(kingdom, position)
end
--> 클라우드 10
--> Forest 42

반환된 값은 문자열이 아닌 숫자이므로 숫자 입니다.


local match = "This is an example"
local pattern = "This is an ()example"
local position = string.match(match, pattern)
print(typeof(position)) --> number