[解決済み] Luaでstring.gmatch()を使って文字列を分割する
2022-03-12 13:11:59
質問
文字列を分割するためのいくつかの議論やユーティリティ関数がありますが、私は非常に単純なタスクのためのアドホックなワンライナーが必要です。
次のような文字列があります。
local s = "one;two;;four"
で分割したい。
";"
. 私は、最終的に
{ "one", "two", "", "four" }
を返します。
というわけで、やってみました。
local s = "one;two;;four"
local words = {}
for w in s:gmatch("([^;]*)") do table.insert(words, w) end
しかし、その結果(
words
テーブル)は
{ "one", "", "two", "", "", "four", "" }
. それは確かに私が欲しいものではありません。
さて、私が発言したように、ここには文字列の分割に関する議論がいくつかありますが、それらには "長い" 関数があり、私は何か簡潔なものが必要なのです。このコードはLuaの長所を示すプログラムのために必要で、もしつまらないことをするために長い関数を追加したら、私の逆鱗に触れてしまうでしょう。
どのように解決するのですか?
local s = "one;two;;four"
local words = {}
for w in (s .. ";"):gmatch("([^;]*);") do
table.insert(words, w)
end
を1つ追加することで
;
を文字列の末尾に追加すると、文字列は次のようになります。
"one;two;;four;"
を使えば、キャプチャしたいもの全てにパターン
"([^;]*);"
にマッチします。
;
の後に
;
(欲張り)です。
テストしてください。
for n, w in ipairs(words) do
print(n .. ": " .. w)
end
出力します。
1: one
2: two
3:
4: four
関連
-
[解決済み] PowerShellで文字列からテキストを削除する
-
[解決済み] JavaScriptで文字列が部分文字列を含むかどうかを確認する方法は?
-
[解決済み] C#のStringとstringの違いは何ですか?
-
[解決済み] JavaでInputStreamを読み込んでStringに変換するにはどうすればよいですか?
-
[解決済み] なぜパスワードにはStringではなくchar[]が好まれるのですか?
-
[解決済み] Pythonには文字列の'contains'サブストリングメソッドがありますか?
-
[解決済み] バイトを文字列に変換する
-
[解決済み] Javaで文字列を分割する方法
-
[解決済み】JavaScriptで文字列の出現箇所をすべて置換する方法
-
[解決済み】大文字・小文字を区別しない「Contains(string)
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] Mips ユーザー入力文字列の保存方法
-
[解決済み] OCAML - 文字列と部分文字列
-
[解決済み] UTF-32とUCS-4の違いは何ですか?
-
[解決済み] PowerShell の " (" - 中括弧 ) の分割について
-
[解決済み】Powershellコンソールで複数行の文字列を割り当てる方法
-
[解決済み】Java7で文字列からパスを作成する。
-
[解決済み】「改行」と「キャリッジリターン」の違いは?
-
[解決済み】Swiftでランダムな英数字の文字列を生成する
-
[解決済み】Bashでファイルに文字列が存在するかどうかをテストする方法は?
-
[解決済み】Objective-CのisEqualToStringのSwiftに相当するものは何ですか?