Menu
CoddyTech

string.find()

Coddy Lua 여정의 기초 섹션에 포함된 레슨. 90개 중 48번째.

string.find() 함수는 문자열 내에서 검색할 때 유용한 도구입니다. 더 큰 문자열 안에서 더 작은 문자열(패턴이라고 함)을 찾고, 그것이 정확히 어디에서 발견되었는지 알려줍니다.

기본 구문은 다음과 같습니다.

string.find(text, pattern)

string.find()가 패턴을 성공적으로 찾으면 두 개의 숫자를 반환합니다. 일치하는 항목의 시작 위치와 끝 위치입니다. 패턴을 찾지 못하면 nil을 반환합니다.

간단한 예시는 다음과 같습니다:

local sentence = "The treasure is hidden here"
local start_pos, end_pos = string.find(sentence, "treasure")
print(start_pos, end_pos)  -- 출력: 5 12

이 예시에서 "treasure"라는 단어는 문장의 위치 5에서 시작해 위치 12에서 끝납니다.

알아둘 점이 하나 있습니다. 검색하는 텍스트는 일반 텍스트가 아니라 패턴입니다. 패턴에서 몇몇 문자는 특별한 의미를 가집니다: . % - + * ? [ ] ^ $ ( ). 이 문자들은 강의 뒷부분에서 배우게 됩니다. 위 예시처럼 문자, 숫자, 공백은 그 자체와 일치하지만, 특수 문자는 의도한 것보다 더 많은 항목과 일치할 수 있습니다:

print(string.find("Score: 105", "1.5"))  -- 출력: 8 10 (.이 0과 일치함)

텍스트를 작성된 그대로 정확히 검색하려면 인수 두 개를 더 추가하세요. 1(첫 번째 문자부터 시작)과 true(특수 문자 없이 일반 검색):

print(string.find("Score: 105", "1.5", 1, true))   -- 출력: nil
print(string.find("Version 1.5", "1.5", 1, true))  -- 출력: 9 11
challenge icon

챌린지

쉬움

더 큰 문자 메시지 안에서 숨겨진 암호 단어를 검색하는 비밀 메시지 탐지기를 만드세요. message라는 변수를 선언하고 "The ancient treasure lies beneath the old oak tree" 값을 할당하세요. string.find() 함수를 사용해 메시지에서 "treasure"라는 단어를 검색하고, 시작 위치와 끝 위치를 startPos 및 endPos라는 변수에 저장하세요. 두 위치 값을 각각 별도의 줄에 출력하세요.

직접 해보기

-- message 변수를 선언합니다
local message = "The ancient treasure lies beneath the old oak tree"

-- TODO: 여기에서 "treasure"라는 단어를 찾고 위치를 저장하는 코드를 작성하세요

-- 위치를 출력합니다
print(startPos)
print(endPos)
quiz icon실력 점검

이 레슨에는 짧은 퀴즈가 포함되어 있습니다. 레슨을 시작해 문제를 풀고 진행 상황을 기록하세요.

기초의 모든 레슨

직접 연습해 보세요: 온라인 Lua 컴파일러