- This article is about the type. For the API, see String API. For the crafting ingredient, see Printed Pages.
Strings can be used in a program's source code by using a string literal, which is typically indicated by enclosing the desired sequence of characters within a pair of single or double quotes:
-- myString and myOtherString are variables that hold a string value local myString = "Hello world!" local myOtherString = 'Hola mundo!'
To use characters such as a newline (
local escapedString = "John: \"Hey There!\"\nAlex: \\Timidly\\ \"H h.. hi\"" print(escapedString) --[[ The following will be printed: John: "Hey There!" Alex: \Timidly\ "H h.. hi" ]] local ydots = "\255" print(ydots) -- ÿ
The above method of expressing a string literal is for single-line usage only,
for a multi-line string literal, begin the sequence with
and terminate it with
local multilineString = [[ Hello world! I span multiple lines!]]
One thing to note is that when using the multiline literal, Lua will ignore the
first newline if nothing follows the initial
[[, but not the
local multilineString = [[ abc def]] print(multilineString == "abc\ndef") -- true local secondMultiline = [[ abc def ]] print(secondMultiline == "abc\ndef\n") -- true
Additionally, inside of a multiline string, there is no concept of escapes,
so using characters like
\ will represent themselves
instead of acting specially:
local multilineString = [[ John: "Hey There!" Alex: \Timidly\ "H h.. hi"]] print(multilineString) -- Prints exactly what you would expect print([[\255]]) -- Will print "\255" instead of "ÿ"
Therefore, to include the
[[ symbol, place
between the brackets, like so:
local myString = [=[ Hello world! This [[can contain]] double square brackets and still [be[[valid]]] ]=] local myOtherString = [===[ You can nest these literals by using more ='s Testing [=[ Hello! [] ]=] like so ^^^^^^^^^^^^^^^^^^^ ]===]
There is no limit to the amount of
='s one can place between the brackets, thereby
allowing for deeply nested multline string literals, if desired.