1. ホーム
  2. スクリプト・コラム
  3. ルア

Luaで文字列を操作するための基本的なメソッド

2022-02-10 20:31:08

 文字列とは、制御文字と同様に文字の並びのことです。文字列は、次の3つの形式で初期化することができます。

  •     シングルクォートで囲まれた文字
  •     二重引用符で囲まれた文字
  •     と] [[and]]の間の文字

上記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"

エスケープされた文字列の中で、文字の通常の解釈を変更する文字列を使用します。例えば、上の例で二重引用符("")を印刷する場合、 \" というエスケープシーケンスを使用していますが、その使用方法は以下の表のとおりです。

 文字列操作

Luaは文字列の操作に対応しています。

では、これらの文字列操作関数の動作を確認するために、いくつかの例に飛び込んでみましょう。
大文字小文字の操作

文字列を操作して大文字と小文字を変換するサンプルコードは次のとおりです。

コピーコード コードは以下の通りです。
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

検索と逆引き

Find String IndexとReverse Stringのサンプルコードは以下の通りです。

コピーコード コードは以下の通りです。
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

文字列の書式設定

プログラミングをしていると、文字列を整形して表示する必要が出てくることが多々あります。これは、文字列を使用して行うことができます。書式設定関数は、以下のように出力を書式設定します。

コピーコード コードは以下の通りです。
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[code]

Character and byte representation

Character and Byte Representation An example code for converting the internal representation of a string from a string and vice versa.

[code]-- 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))

-- 内部数値のASCII変換
print(文字列.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