3

テーブルの入力を受け取り、そのテーブル内の文字列を全角で出力する lua スクリプトを作成したいと考えています。

input = {"Hello", " ", "World"}
print(full(table.concat(input)))

「Hello World」と表示されます。

私はこれを使って試しました:

local encoding = [[ 0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ!゛#$%&()*+、ー。/:;〈=〉?@[\\]^_‘{|}~]]
function char(i)
   return encoding:sub(i:len(),i:len())
end
function decode(t)
   for i=1,#t do t[i]=char(t[i]) end
   return table.concat(t)
end
function returns(word, word_eol)
    print(char(word_eol[2]))
end

しかし、それはうまくいきませんでした

注:これはhexchatのプラグインです。そのため、私はそれをprint(char(word_eol[2])))

hexchat でコマンドをフックすると、コマンド名であるテーブルが吐き出されるため、その後に入力されたもの

4

2 に答える 2

2

もし ( string ) = [[ 0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ of (文字列) 。nは文字の長さで、常に 1 になります。私が正しく理解していれば、別のアルファベットを持ち、文字を一致させることで、これでうまくいきます。

local encoding = [[ 0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ!゛#$%&()*+、ー。/:;〈=〉?@[]^_‘{|}~]]
local decoding = [[ 0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ!"#$%&()*+,-./:;{=}?@[]^_'{|}~]]
function char(i)
   local l = decoding:find(i,1,true)
   return encoding:sub(l,l)
end
function decode(t)
   for i=1,#t do t[i]=char(t[i]) end
   return table.concat(t)
end
function returns(word, word_eol)
    print(char(word_eol[2]))
end
于 2016-05-03T22:14:52.407 に答える
2
function full(s)
   return (s:gsub('.', function(c)
      c = c:byte()
      if c == 0x20 then
         return string.char(0xE3, 0x80, 0x80)
      elseif c >= 0x21 and c <= 0x5F then
         return string.char(0xEF, 0xBC, c+0x60)
      elseif c >= 0x60 and c <= 0x7E then
         return string.char(0xEF, 0xBD, c+0x20)
      end
   end))
end
于 2016-05-03T09:02:28.597 に答える