string.find()
本课属于 Coddy Lua 学习旅程的“逻辑与流程”单元。第 37 课,共 54 课。
现在你已经了解了字符类,可以将它们与 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这种模式会检查字符串是否以字母开头,因此适用于需要特定格式的输入验证。
挑战
简单编写一个函数 startsWithLetter,接收 text,并返回该字符串是否以字母开头。
使用 string.find()、锚点 ^ 和字符类 %a,检查字符串是否以字母开头。
参数:
text(字符串):要验证的字符串
返回值:如果字符串以字母开头,则返回 true;否则返回 false(布尔值)
亲手试试
function startsWithLetter(text)
-- 在这里编写代码
end
这节课包含一个小测验。开始学习即可作答,并记录你的进度。
逻辑与流程中的所有课
自己练习: Lua 在线编译器