2017-12-21 7 views

答えて

4

Luaの文字列の長さは、それにバイトの数ではなく、文字の数です。

マルチバイト文字セットを処理するには、utf8のようなライブラリが必要です。これはLua 5.3で利用できます。

+1

https://github.com/starwing/luautf8を試してください – lhf

+0

私が直面する問題は、長さ80の文字列をサポートする必要があるということです。したがって、 '£'という文字を含む入力はluaあたりの長さを超えていますが、ユーザーからではありません視点。 – user1691485

+0

I = 1のローカル関数parse_string(STR) ローカルRET = "" ローカルフラグ=真 に、#str ローカルC = STRを行う:サブ(I、I) ローカルチャー= string.char(B2I。オーバーライド:(C、 "大"、偽、1)) のchar> "\ 127" その後、 フラグ=ないフラグ (フラグ)の場合であれば、その後 RET = RET ...文字 エンド 他 のRET =のRET。 char end end return ret end – user1691485

0

解決策が見つかりました。

ローカル関数parse_string(STR)

local ret = "" 

    local flag = true 

    for i = 1, #str do 

      local c = str:sub(i,i) 

      local char = string.char(b2i.toint(c, "big", false, 1)) 


      if char > "\127" then 

      flag = not flag 

      if(flag) then 

       ret = ret .. char 

      end 

     else 

     ret = ret .. char 

    end 

return ret 

+0

の最適化を歓迎します。 – user1691485

関連する問題