NScripter Ver.18.00at GAMEDEVNScripter Ver.18.00 - 暇つぶし2ch■コピペモード□スレを通常表示□オプションモード□このスレッドのURL■項目テキスト287:名前は開発中のものです。 11/11/02 23:36:59.04 jHI46FZg 禁則処理するなら句読点だけじゃなくてカッコの開きとか約物全般もあるからややこしいだろうな それに幼促音(ぁぃぅぇぉゃゅょ)とかも必要だと思うし 288:名前は開発中のものです。 11/11/03 00:43:09.44 KSEApuIL てか実行時に禁則処理する必要って本当にあるの? 289:名前は開発中のものです。 11/11/03 01:36:18.28 K2sw8Til 何とも思わない奴にとっては必要ないが、 物書きなら必要に感じるじゃね 290:名前は開発中のものです。 11/11/03 08:38:17.95 KSEApuIL 禁則処理が不要って言うんじゃなくて 主人公の名前が変更できて文字数が不定だとか フォントサイズを調整できるとか そういうんでなければ シナリオからスクリプトに変換する段階で もっと文字列処理が楽な言語で処理すればいいんじゃねと 291:名前は開発中のものです。 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 どっちか使えば、文字列の分割は完了。 次は肝の禁則処理。 次ページ最新レス表示レスジャンプ類似スレ一覧スレッドの検索話題のニュースおまかせリストオプションしおりを挟むスレッドに書込スレッドの一覧暇つぶし2ch