FC2ブログ

Lua 学習:文字列分割3法

2017-11-29 :  PCクリニック
Lua ( GSL Shell ) において、
文字列分割については、・・・・・

昨年3月(2016-03-12)の記事:
GSL Shell 学習:split 関数(再)」の“mysplit”関数

今年6月(2017-06-16)の記事:
Lua ( GSL Shell ) / Penlight 学習:これは頂き」の“utils.split”関数

そして、前(2017-11-27)の記事:
Microlight 学習:split 関数」の“split”関数

これら3法の仕様について比較検証を行った。
 1)タブの扱い
 2)先頭に空白が有る場合
----- test_prog.gsl -----

--「GSL Shell 学習:split 関数(再)」で書いた mysplit 関数
function mysplit( str, sep )
if sep == nil then sep = '%s' end
local t={} ; i=1
for str in string.gmatch( str, "([^"..sep.."]+)") do
t[i] = str i=i+1
end
return t
end

-- Penlight の utils.split 関数
require'pl'
--[[ utils.split( str, sep, plain, n )
・ s: The input string
・ re: A Lua string pattern; defaults to‘%s+’
・ plain: plain don't use Lua patterns
・ n: optional maximum number of splits
]]

-- Microlight の split 関数
require'ml'.import()
--[[ split( s, re, n )
・ s: The input string
・ re: A Lua string pattern; defaults to '%s+'
・ n: optional maximum number of splits
]]

--====================================

-- テストデータ
s1 = ' a b c'; s2 = ' a \t b \t c'

-- 実行1:
print( mysplit(s1) ) --> {"a", "b", "c"}
print( utils.split(s1) ) --> {"", "a", "b", "c"}
print( split(s1) ) --> {"", "a", "b", "c"}

-- 実行2:
print( mysplit(s2) ) --> {"a", "b", "c"}
print( utils.split(s2) ) --> {"", "a", "b", "c"}
print( split(s2) ) --> {"", "a", "b", "c"}

-- 結果:
--[[ 何れも、タブ空白と同じ扱い。
   行頭に空白があった場合の扱いは:
     mysplit:空白が無いのと同じ扱い。
     pl / ml:先頭にが有るとみなす。
]]
と云うことですか。


本日はここまで。


Lua ( GSL Shell ) 学習は続く。


見ていただいた序でとは厚かましい限りですが、
お帰りに投票して頂けるとなお嬉しいです。 ⇒ blogram投票ボタン


171030
関連記事
スポンサーサイト

コメントの投稿

管理者にだけ表示を許可する

おきてがみ/blogram
blogram投票ボタン



おきてがみ

最新記事
カレンダー
09 | 2018/10 | 11
- 1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30 31 - - -
月別アーカイブ
カテゴリ
最新コメント
検索フォーム
リンク
プロフィール

<紙>

Author:<紙>
ようこそ。
「パソコンヲタクの雑記帳」
もろもろなことを綴っています。
パソコン ヲタクってねくら?
画像は kami でなく kani です。

カウンター(fc2、i2i) /Google Analytics


i2i(from 2010-08-24)
Total =
Today  =  
Yesterday=
アンチエイジング

Google Analytics
ブックマーク