String: Difference between revisions
>Nickardson No edit summary |
>JulienDethurens No edit summary |
||
(6 intermediate revisions by 2 users not shown) | |||
Line 1: | Line 1: | ||
{{Map|Scripting|Data Types}} | {{Map|Scripting|Data Types}} | ||
Strings are sequences of letters, numbers, and symbols. | Strings are sequences of letters, numbers, and symbols. | ||
== Making a string == | |||
The most common method of creating strings is to put double quotes around the characters you want. | The most common method of creating strings is to put double quotes around the characters you want. | ||
See the code below for an example: | See the code below for an example: | ||
{{code|= | |||
local str = "Hello, world!" | local str = "Hello, world!" | ||
}} | |||
This will cause {{`|str}} to contain the string {{`|Hello, world}}. However, what if you wanted to have double quotes within your string? If you have double quotes in a string, it will cause unwanted effects. | This will cause {{`|str}} to contain the string {{`|Hello, world}}. However, what if you wanted to have double quotes within your string? If you have double quotes in a string, it will cause unwanted effects. | ||
{{code|= | |||
local str = "Hello, "Dave"!" -- We don't want this! | local str = "Hello, "Dave"!" -- We don't want this! | ||
}} | |||
How can we fix this? There are other ways to create a string. We can use single quotes, or we can use double brackets. | How can we fix this? There are other ways to create a string. We can use single quotes, or we can use double brackets. | ||
Line 37: | Line 35: | ||
== Combining strings == | == Combining strings == | ||
Let's say you wanted to combine two strings into one. This can be easily done by using ( .. ) in between the two strings. | |||
{{code and output|code= | {{code and output|code= | ||
Line 54: | Line 53: | ||
The process of combining two strings into one is known as ''concatenation'' | The process of combining two strings into one is known as ''concatenation'' | ||
==Converting a string to a number== | == Converting a string to a number == | ||
You can easily convert a string to a number by using the tonumber() function. This function takes one argument, which is a string, and will return the string into a number. The string must be a sequence of characters that resembles a number, such as "5128", "2", etc. Any strings that don't resemble numbers, such as "Hello", will return nil. | You can easily convert a string to a number by using the tonumber() function. This function takes one argument, which is a string, and will return the string into a number. The string must be a sequence of characters that resembles a number, such as "5128", "2", etc. Any strings that don't resemble numbers, such as "Hello", will return nil. | ||
This is an example of tonumber() usage. | This is an example of tonumber() usage. | ||
{{code|= | |||
a = "123" | a = "123" | ||
b = 5 + tonumber(a) --tonumber() usage here | b = 5 + tonumber(a) --tonumber() usage here | ||
print(b) --128 | print(b) --128 | ||
}} | |||
== Math and strings == | == Math and strings == | ||
An important note with strings is that if you try to perform arithmetic on a string value, it will try to convert the string to a number. If your value can't be converted to a number, you will get an error. | An important note with strings is that if you try to perform arithmetic on a string value, it will try to convert the string to a number. If your value can't be converted to a number, you will get an error. | ||
Line 80: | Line 81: | ||
In the second example "whoops" could not be converted to a number, because it was a word. | In the second example "whoops" could not be converted to a number, because it was a word. | ||
{{code|= | |||
print("50" == 50) -- false, because a string is not equal to a number. | print("50" == 50) -- false, because a string is not equal to a number. | ||
print(tostring(50) == "50") -- true, because you converted the number 50 to a string | print(tostring(50) == "50") -- true, because you converted the number 50 to a string | ||
print(tonumber("50") == 50) -- true, because you converted the string "50" to a number | print(tonumber("50") == 50) -- true, because you converted the string "50" to a number | ||
print(50 .. "" == "50") -- true, because you tacked on an empty string to the end of the number 50, converting 50 to a string. | print(50 .. "" == "50") -- true, because you tacked on an empty string to the end of the number 50, converting 50 to a string. | ||
}} | |||
==== Advanced ==== | ==== Advanced ==== | ||
This will also work with [[hexadecimal]] numbers: | This will also work with [[hexadecimal]] numbers: | ||
{{code|= | |||
print(0xf == 15) -- true, because 0xf is a hexadecimal number which equals 15 | print(0xf == 15) -- true, because 0xf is a hexadecimal number which equals 15 | ||
print(tonumber("0xf") == 15) -- true, because you converted the string "0xf" to a number, 0xf | print(tonumber("0xf") == 15) -- true, because you converted the string "0xf" to a number, 0xf | ||
}} | |||
as well as with other based numbers, but you have to specify the base: | as well as with other based numbers, but you have to specify the base: | ||
{{code|= | |||
print(tonumber("00001111",2)) -- prints 15 | print(tonumber("00001111",2)) -- prints 15 | ||
print(tonumber("00001111",2)==15) -- prints true | print(tonumber("00001111",2)==15) -- prints true | ||
Line 103: | Line 105: | ||
print(tonumber("774",8)) -- prints 508 | print(tonumber("774",8)) -- prints 508 | ||
print(tonumber("774",8)==508) -- prints true | print(tonumber("774",8)==508) -- prints true | ||
}} | |||
== Literals == | == Literals == | ||
{{code|= | |||
print("hello") | print("hello") | ||
print('hello') | print('hello') | ||
print([[hello]]) | print([[hello]]) | ||
}} | |||
Will all result in: | Will all result in: | ||
hello | <samp>hello</samp> | ||
This allows you to nest a string within another string: | This allows you to nest a string within another string: | ||
Line 128: | Line 130: | ||
}} | }} | ||
=== Multiline | === Multiline literals === | ||
{{code and output|code= | {{code and output|code= | ||
Line 153: | Line 155: | ||
}} | }} | ||
===Nesting square brackets=== | === Nesting square brackets === | ||
Nested brackets rely on the use of equals signs to distinguish one nested bracket from another. | Nested brackets rely on the use of equals signs to distinguish one nested bracket from another. | ||
Line 170: | Line 172: | ||
}} | }} | ||
===Escaping=== | === Escaping === | ||
In single or double quotes, but not block quotes, you can use backslashes ({{`|\}}) to embed any character. | In single or double quotes, but not block quotes, you can use backslashes ({{`|\}}) to embed any character. | ||
Line 176: | Line 179: | ||
A backslash followed by punctuation or newline overrides any special meaning and puts the character in the string. This is most useful in put quotes or backslash into a quoted string. | A backslash followed by punctuation or newline overrides any special meaning and puts the character in the string. This is most useful in put quotes or backslash into a quoted string. | ||
{{code|= | |||
print( 'String \'abc\'' ) | print( 'String \'abc\'' ) | ||
print( "String with \" \\ and \' " ) | print( "String with \" \\ and \' " ) | ||
}} | |||
A backslash followed by 1-3 numbers represents the string.byte value of that number. | A backslash followed by 1-3 numbers represents the string.byte value of that number. | ||
{{code and output|code= | {{code and output|code= | ||
Line 187: | Line 190: | ||
}} | }} | ||
Be careful if you use fewer than 3 numbers ("\0" for example) and a number comes after it. | Be careful if you use fewer than 3 numbers ("\0" for example) and a number comes after it. | ||
{{code|= | |||
print( "\000123" ~= "\0123" ) | print( "\000123" ~= "\0123" ) | ||
}} | |||
== See also == | |||
[[Category:Data | *[http://www.lua.org/pil/2.4.html Programming in Lua 2.4 -- Strings] | ||
*[http://www.lua.org/manual/5.1/manual.html Lua 5.1 Reference Manual] | |||
*[http://lua-users.org/wiki/StringsTutorial StringsTutorial] | |||
*[[StringValue]] | |||
*[[Category:Data types]] |
Latest revision as of 05:13, 16 April 2012
Strings are sequences of letters, numbers, and symbols.
Making a string
The most common method of creating strings is to put double quotes around the characters you want. See the code below for an example:
local str = "Hello, world!"
This will cause str to contain the string Hello, world. However, what if you wanted to have double quotes within your string? If you have double quotes in a string, it will cause unwanted effects.
local str = "Hello, "Dave"!" -- We don't want this!
How can we fix this? There are other ways to create a string. We can use single quotes, or we can use double brackets.
Combining strings
Let's say you wanted to combine two strings into one. This can be easily done by using ( .. ) in between the two strings.
The process of combining two strings into one is known as concatenation
Converting a string to a number
You can easily convert a string to a number by using the tonumber() function. This function takes one argument, which is a string, and will return the string into a number. The string must be a sequence of characters that resembles a number, such as "5128", "2", etc. Any strings that don't resemble numbers, such as "Hello", will return nil.
This is an example of tonumber() usage.
a = "123"
b = 5 + tonumber(a) --tonumber() usage here
print(b) --128
Math and strings
An important note with strings is that if you try to perform arithmetic on a string value, it will try to convert the string to a number. If your value can't be converted to a number, you will get an error.
In the first example, "5" was converted from a string to a number (notice "5" was in quotes, but 1 was not.) In the second example "whoops" could not be converted to a number, because it was a word.
print("50" == 50) -- false, because a string is not equal to a number.
print(tostring(50) == "50") -- true, because you converted the number 50 to a string
print(tonumber("50") == 50) -- true, because you converted the string "50" to a number
print(50 .. "" == "50") -- true, because you tacked on an empty string to the end of the number 50, converting 50 to a string.
Advanced
This will also work with hexadecimal numbers:
print(0xf == 15) -- true, because 0xf is a hexadecimal number which equals 15
print(tonumber("0xf") == 15) -- true, because you converted the string "0xf" to a number, 0xf
as well as with other based numbers, but you have to specify the base:
print(tonumber("00001111",2)) -- prints 15
print(tonumber("00001111",2)==15) -- prints true
print(tonumber("774",8)) -- prints 508
print(tonumber("774",8)==508) -- prints true
Literals
print("hello")
print('hello')
print([[hello]])
Will all result in: hello
This allows you to nest a string within another string:
Multiline literals
You can also use normal quotation marks with a backslash at the end of each line to create multiline strings:
Nesting square brackets
Nested brackets rely on the use of equals signs to distinguish one nested bracket from another.
Example:
Escaping
In single or double quotes, but not block quotes, you can use backslashes (\) to embed any character.
Backslash followed by certain letters have special meanings (see the Lua Manual).
A backslash followed by punctuation or newline overrides any special meaning and puts the character in the string. This is most useful in put quotes or backslash into a quoted string.
print( 'String \'abc\'' )
print( "String with \" \\ and \' " )
A backslash followed by 1-3 numbers represents the string.byte value of that number.
Be careful if you use fewer than 3 numbers ("\0" for example) and a number comes after it.
print( "\000123" ~= "\0123" )