NScripter Ver.18.00at GAMEDEV
NScripter Ver.18.00 - 暇つぶし2ch291:名前は開発中のものです。
11/11/03 09:03:15.09 I5e3eJcR
禁則処理は行で分けるんじゃなくて、最初は文字で分けるべきな。

local text = "なんか適当な、サンプル文章。" -- 表示したい文章

表示文に2バイト文字しか入らないことが保証されているなら、分割部分は簡単にできるな。

local letters = {} -- 分割した文字を入れるテーブル
-- 2バイト文字専用分割
for i=1, text:len()-1, 2 do
letters[#letters+1] = text:gsub(i, i+1)
end

半角文字も混じるようなら、文字コード調べるところからになるなあ。

function letter_length(letter) -- 文字を与えたら、その文字の長さを0か1で返す関数。半角なら0、全角なら1を返す。
local num = letter:byte() -- 先頭の文字の文字コードを取得。
if num < 127 then return 0 end
if num < 161 then return 1 end
if num < 224 then return 0 end
return 1
end
-- この関数はShift-JIS専用

local letters = {}
local cursor = 1
while cursor < text:len()+1 do
letters[#letters+1] = text:gsub(cursor, cursor+letter_length(text:gsub(cursor, cursor))
cursor = cursor + letters[#letters]:len()
end

どっちか使えば、文字列の分割は完了。
次は肝の禁則処理。


次ページ
続きを表示
1を表示
最新レス表示
レスジャンプ
類似スレ一覧
スレッドの検索
話題のニュース
おまかせリスト
オプション
しおりを挟む
スレッドに書込
スレッドの一覧
暇つぶし2ch