Menu
Coddy logo textTech

string.find()

Coddy Lua 여정의 Logic & Flow 섹션에 포함된 레슨 — 54개 중 37번째.

이제 문자 클래스를 이해했으므로, 정확한 텍스트 대신 패턴을 검색하기 위해 string.find()와 함께 사용할 수 있습니다. 이는 텍스트 유효성 검사 및 분석을 위한 강력한 가능성을 열어줍니다.

string.find() 함수는 리터럴 문자열과 마찬가지로 패턴에서도 동일하게 작동합니다. 패턴이 처음으로 일치하는 위치를 반환합니다:

local text = "User123"
local position = string.find(text, "%d")
print(position)  -- 출력: 5

이것은 문자열에서 첫 번째 숫자를 찾으며, 그 위치는 5입니다. 대문자 문자 클래스를 사용하여 그 반대의 경우를 검색할 수도 있습니다:

local code = "ABC123"
local position = string.find(code, "%D")
print(position)  -- 출력: 1

여기서 %D는 숫자가 아닌 모든 문자와 일치하므로, 위치 1에서 첫 번째 문자를 찾습니다.

일반적인 유효성 검사 작업 중 하나는 문자열이 특정 패턴으로 시작하는지 확인하는 것입니다. 패턴의 시작 부분에 앵커 ^를 사용하여 문자열의 시작 부분에서만 일치하도록 할 수 있습니다:

local username = "player42"
local startsWithLetter = string.find(username, "^%a")

if startsWithLetter then
    print("Valid username")
else
    print("Username must start with a letter")
end

이 패턴은 문자열이 문자로 시작하는지 확인하므로, 특정 형식이 필요한 입력 유효성 검사에 유용합니다.

challenge icon

챌린지

쉬움

text를 인자로 받아 문자열이 문자로 시작하는지 여부를 반환하는 startsWithLetter 함수를 작성하세요.

앵커 ^%a 문자 클래스를 포함한 string.find()를 사용하여 문자열이 문자로 시작하는지 확인하세요.

매개변수:

  • text (string): 유효성을 검사할 문자열

반환 값: 문자열이 문자로 시작하면 true, 그렇지 않으면 false (boolean)

치트 시트

문자열에서 패턴을 검색하려면 문자 클래스와 함께 string.find()를 사용하세요. 패턴이 처음 일치하는 위치를 반환합니다:

local text = "User123"
local position = string.find(text, "%d")
print(position)  -- 출력: 5

대문자 문자 클래스는 반대되는 것(일치하지 않는 문자)과 일치합니다:

local code = "ABC123"
local position = string.find(code, "%D")
print(position)  -- 출력: 1

문자열의 시작 부분에서만 일치하도록 하려면 패턴의 시작 부분에 앵커 ^를 사용하세요:

local username = "player42"
local startsWithLetter = string.find(username, "^%a")

if startsWithLetter then
    print("Valid username")
else
    print("Username must start with a letter")
end

직접 해보기

function startsWithLetter(text)
    -- 여기에 코드를 작성하세요
end
quiz icon실력 점검

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

Logic & Flow의 모든 레슨