string.gmatch()를 이용한 반복 처리
Coddy Lua 여정의 Logic & Flow 섹션에 포함된 레슨 — 54개 중 39번째.
string.match()가 패턴의 첫 번째 일치 항목을 찾는 반면, 문자열 내의 모든 일치 항목을 찾아야 한다면 어떻게 해야 할까요? string.gmatch() 함수는 각 일치 항목을 하나씩 처리하기 위해 for 루프에서 사용할 수 있는 반복자(iterator)를 반환함으로써 이 문제를 해결합니다.
기본 구문은 다음과 같습니다:
for match in string.gmatch(text, pattern) do
-- 각 일치 항목을 처리합니다
end문자열에서 모든 숫자를 찾는 예제입니다:
local text = "I have 3 apples and 5 oranges"
for number in string.gmatch(text, "%d+") do
print(number)
end
-- 출력:
-- 3
-- 5패턴 %d+는 하나 이상의 숫자에 매칭되며, 찾은 각 숫자마다 루프가 한 번씩 실행됩니다.
문장에서 모든 단어를 추출할 수도 있습니다:
local sentence = "Lua is a powerful language"
for word in string.gmatch(sentence, "%a+") do
print(word)
end
-- Output:
-- Lua
-- is
-- a
-- powerful
-- language챌린지
쉬움text를 인자로 받아 텍스트에서 발견된 모든 해시태그를 각각 별도의 줄에 반환하는 extractHashtags 함수를 작성하세요.
텍스트에서 모든 해시태그를 찾기 위해 string.gmatch()를 사용하세요. 해시태그는 #로 시작하고 하나 이상의 문자가 뒤따릅니다.
로직:
- 모든 해시태그를 찾기 위해
"#%a+"패턴과 함께string.gmatch()를 사용합니다. - 각 일치 항목을 반복하여 수집합니다.
- 모든 해시태그를 줄바꿈 문자(
\n)로 연결합니다. - 해시태그가 발견되지 않으면 빈 문자열을 반환합니다.
매개변수:
text(string): 해시태그를 검색할 텍스트
반환값: 발견된 모든 해시태그를 각각 별도의 줄에 반환합니다. 해시태그가 존재하지 않으면 빈 문자열을 반환합니다. (string)
치트 시트
string.gmatch() 함수는 문자열에서 패턴의 모든 발생을 찾는 반복자(iterator)를 반환하여, for 루프에서 각 일치 항목을 처리할 수 있게 해줍니다.
기본 구문:
for match in string.gmatch(text, pattern) do
-- 각 일치 항목 처리
end모든 숫자를 찾는 예제:
local text = "I have 3 apples and 5 oranges"
for number in string.gmatch(text, "%d+") do
print(number)
end
-- 출력:
-- 3
-- 5모든 단어를 추출하는 예제:
local sentence = "Lua is a powerful language"
for word in string.gmatch(sentence, "%a+") do
print(word)
end
-- 출력:
-- Lua
-- is
-- a
-- powerful
-- language직접 해보기
function extractHashtags(text)
-- 여기에 코드를 작성하세요
end
이 레슨에는 짧은 퀴즈가 포함되어 있습니다. 레슨을 시작해 문제를 풀고 진행 상황을 기록하세요.