Lua - 字串

Hello, aspiring programmers! Today, we're diving into the wonderful world of strings in Lua. As your friendly neighborhood computer teacher, I'm excited to guide you through this journey. Let's imagine strings as the words and sentences of programming – they're how we work with text in our code. So, put on your learning caps, and let's get started!

Lua - Strings

字串操作

In Lua, strings are like magical sequences of characters that we can manipulate in various ways. Let's start with the basics:

創建字串

local greeting = "Hello, World!"
local name = 'Alice'
local multiline = [[
This is a
multiline string
]]

In this example, we've created three strings:

  1. greeting uses double quotes
  2. name uses single quotes
  3. multiline uses double square brackets for multiple lines

Both single and double quotes work the same way, but using double brackets allows you to include line breaks.

串接

Concatenation is just a fancy word for joining strings together. In Lua, we use the .. operator:

local first_name = "John"
local last_name = "Doe"
local full_name = first_name .. " " .. last_name
print(full_name)  -- Output: John Doe

Here, we've joined first_name, a space, and last_name to create full_name.

大小寫變換

Sometimes we need to shout (uppercase) or whisper (lowercase) our strings:

local text = "Hello, Lua Learners!"
print(string.upper(text))  -- Output: HELLO, LUA LEARNERS!
print(string.lower(text))  -- Output: hello, lua learners!

The string.upper() and string.lower() functions do exactly what you'd expect – they make our text ALL CAPS or all lowercase.

替換子字串

Need to find and replace part of a string? Lua's got you covered:

local sentence = "I love apples, apples are my favorite fruit."
local new_sentence = string.gsub(sentence, "apples", "oranges")
print(new_sentence)  -- Output: I love oranges, oranges are my favorite fruit.

Here, string.gsub() replaces all occurrences of "apples" with "oranges". It's like find-and-replace in your word processor!

查找與反向

查找子字串

To find a substring within a string, we use string.find():

local text = "Lua is fun and powerful!"
local start, finish = string.find(text, "fun")
print("'fun' starts at position " .. start .. " and ends at " .. finish)
-- Output: 'fun' starts at position 8 and ends at 10

This function returns the starting and ending positions of the substring.

反向字串

Want to read your string backwards? Use string.reverse():

local forward = "Lua is awesome"
local backward = string.reverse(forward)
print(backward)  -- Output: emosewa si auL

It's like magic – your text is instantly reversed!

格式化字串

Formatting strings is crucial when you want to create dynamic text. Lua offers a powerful way to do this:

local name = "Alice"
local age = 30
local formatted = string.format("My name is %s and I am %d years old.", name, age)
print(formatted)
-- Output: My name is Alice and I am 30 years old.

In this example, %s is replaced by the string name, and %d is replaced by the number age. It's like filling in the blanks in a sentence!

字元與位元組表示

Lua allows us to work with individual characters in a string:

local str = "Lua"
print(string.byte(str, 1))  -- Output: 76 (ASCII code for 'L')
print(string.char(76))      -- Output: L

string.byte() gives us the ASCII code of a character, while string.char() does the opposite.

其他常用函數

Let's look at a few more useful string functions:

Function Description Example
string.len() 返回字串的長度 print(string.len("Lua")) -- Output: 3
string.rep() 重複字串 print(string.rep("Ha", 3)) -- Output: HaHaHa
string.sub() 提取子字串 print(string.sub("Lua is fun", 1, 3)) -- Output: Lua

These functions are like Swiss Army knives for string manipulation – incredibly versatile and useful!

In conclusion, strings in Lua are powerful tools that allow us to work with text in many creative ways. Remember, practice makes perfect, so don't be afraid to experiment with these functions. Before you know it, you'll be stringing together complex programs with ease!

Happy coding, future programmers! And remember, in the world of programming, every character counts – literally!

Credits: Image by storyset