Lua-文字列
文字列は文字のシーケンスであり、フォームフィードなどの制御文字です。文字列は、-を含む3つの形式で初期化できます。
- 一重引用符で囲まれた文字
- 二重引用符で囲まれた文字
- [[と]]の間の文字
上記の3つのフォームの例を以下に示します。
string1 = "Lua"
print("\"String 1 is\"",string1)
string2 = 'Tutorial'
print("String 2 is",string2)
string3 = [["Lua Tutorial"]]
print("String 3 is",string3)
上記のプログラムを実行すると、次の出力が得られます。
"String 1 is" Lua
String 2 is Tutorial
String 3 is "Lua Tutorial"
文字列では、文字の通常の解釈を変更するためにエスケープシーケンス文字が使用されます。たとえば、二重引用符( "")を出力するために、上記の例では\ "を使用しました。エスケープシーケンスとその使用法を以下の表に示します。
エスケープシーケンス | 使用する |
---|---|
\ a | ベル |
\ b | バックスペース |
\ f | フォームフィード |
\ n | 改行 |
\ r | キャリッジリターン |
\ t | タブ |
\ v | 垂直タブ |
\\ | バックスラッシュ |
\ " | 二重引用符 |
\ ' | 一重引用符 |
\ [ | 左角括弧 |
\] | 右角括弧 |
文字列操作
Luaは文字列を操作するための文字列をサポートしています-
シニア番号 | 方法と目的 |
---|---|
1 | string.upper(argument) 引数の大文字の表現を返します。 |
2 | string.lower(argument) 引数の小文字表現を返します。 |
3 | string.gsub(mainString,findString,replaceString) findStringのオカレンスをreplaceStringに置き換えることにより、文字列を返します。 |
4 | string.find(mainString,findString, optionalStartIndex,optionalEndIndex) メイン文字列内のfindStringの開始インデックスと終了インデックスを返します。見つからない場合はnilを返します。 |
5 | string.reverse(arg) 渡された文字列の文字を逆にして文字列を返します。 |
6 | string.format(...) フォーマットされた文字列を返します。 |
7 | string.char(arg) and string.byte(arg) 入力引数の内部数値および文字表現を返します。 |
8 | string.len(arg) 渡された文字列の長さを返します。 |
9 | string.rep(string, n)) 同じ文字列をn回繰り返すことにより、文字列を返します。 |
10 | .. したがって、演算子は2つの文字列を連結します。 |
それでは、これらの文字列操作関数がどのように動作するかを正確に確認するために、いくつかの例を詳しく見ていきましょう。
ケース操作
文字列を大文字と小文字に操作するためのサンプルコードを以下に示します。
string1 = "Lua";
print(string.upper(string1))
print(string.lower(string1))
上記のプログラムを実行すると、次の出力が得られます。
LUA
lua
部分文字列の置き換え
ある文字列の出現を別の文字列に置き換えるためのサンプルコードを以下に示します。
string = "Lua Tutorial"
-- replacing strings
newstring = string.gsub(string,"Tutorial","Language")
print("The new string is "..newstring)
上記のプログラムを実行すると、次の出力が得られます。
The new string is Lua Language
見つけて元に戻す
部分文字列のインデックスを見つけて文字列を反転するためのサンプルコードを以下に示します。
string = "Lua Tutorial"
-- replacing strings
print(string.find(string,"Tutorial"))
reversedString = string.reverse(string)
print("The new string is",reversedString)
上記のプログラムを実行すると、次の出力が得られます。
5 12
The new string is lairotuT auL
文字列のフォーマット
プログラミングでは、文字列をフォーマットされた方法で印刷する必要がある場合があります。string.format関数を使用して、以下に示すように出力をフォーマットできます。
string1 = "Lua"
string2 = "Tutorial"
number1 = 10
number2 = 20
-- Basic string formatting
print(string.format("Basic formatting %s %s",string1,string2))
-- Date formatting
date = 2; month = 1; year = 2014
print(string.format("Date formatting %02d/%02d/%03d", date, month, year))
-- Decimal formatting
print(string.format("%.4f",1/3))
上記のプログラムを実行すると、次の出力が得られます。
Basic formatting Lua Tutorial
Date formatting 02/01/2014
0.3333
文字とバイトの表現
文字列を文字列から内部表現に、またはその逆に変換するために使用される、文字およびバイト表現のサンプルコード。
-- Byte conversion
-- First character
print(string.byte("Lua"))
-- Third character
print(string.byte("Lua",3))
-- first character from last
print(string.byte("Lua",-1))
-- Second character
print(string.byte("Lua",2))
-- Second character from last
print(string.byte("Lua",-2))
-- Internal Numeric ASCII Conversion
print(string.char(97))
上記のプログラムを実行すると、次の出力が得られます。
76
97
97
117
117
a
その他の一般的な機能
一般的な文字列操作には、文字列の連結、文字列の長さの検索、同じ文字列の複数回の繰り返しが含まれます。これらの操作の例を以下に示します。
string1 = "Lua"
string2 = "Tutorial"
-- String Concatenations using ..
print("Concatenated string",string1..string2)
-- Length of string
print("Length of string1 is ",string.len(string1))
-- Repeating strings
repeatedString = string.rep(string1,3)
print(repeatedString)
上記のプログラムを実行すると、次の出力が得られます。
Concatenated string LuaTutorial
Length of string1 is 3
LuaLuaLua