2016-09-15 4 views
1
ような

何かに来ている:ASCIIのテキストでなければなりませんストリングパーツは、新しい文字列で記述されたASCIIに

result="72:101:108:108:111;116:104:105:115;..." 

str="Hello;this;is;a;text" 

は私が結果としてたいことはこれです。 (「;」など)特定の文字または文字列を検索

+2

'string.gsu "012"、 "(^)"、function(c)return tostring(string.byte(c)).. ':' end) ' – moteus

答えて

0

あなたがする必要がどのようなhttps://www.lua.org/pil/20.html

- - string.byteによって行うことができ、そのASCIIコードに文字を変換するhttps://www.lua.org/pil/20.1.html

string.findを使用して行うことができます上記の2つの関数を使用して新しい文字列を作成しています。あなたはより多くの文字列ベースの機能が必要な場合は、公式Luaのサイトを参照してください。https://www.lua.org/pil/contents.html

2
あなたは連結、 ;で区切られた各単語を取得し、変換するための文字列マッチングを使用することができ

local str = "Hello;this;is;a;text" 
for word in str:gmatch("[^;]+") do 
    ascii = table.pack(word:byte(1, -1)) 
    local converted = table.concat(ascii, ":") 
    print(converted) 
end 

上記のコードの出力次のとおりです。

72:101:108:108:111 
116:104:105:115 
105:115 
97 
116:101:120:116 

残りの作業はお任せします。ヒント:table.concatを使用してください。

T={} 
for c=0,255 do 
    T[string.char(c)]=c..":" 
end 
T[";"]=";" 

str="Hello;this;is;a;text" 
result=str:gsub(".",T):gsub(":;",";") 
print(result) 
+0

ありがとうございました。私が言及したように...私はルアの完全なルーキーです。 – Dupit

+0

さて、私はさらに道がありましたが、str = str1& ""&str2のような2つの別々の文字列からなる文字列を返す方法が見つかりません。 – Dupit

1

gsubが、それは代替品を読み込み、テーブルを受け入れているという事実があること悪用別のアプローチは、あります

str=str1&" "&str2 
0

わかりました...私は道をさらに得たが、私は、文字列を返す方法を見つけることができません。ここで

+1

別の質問。しかし、[文字列連結演算子](https://www.lua.org/manual/5.3/manual.html#3.4.6)が必要です。 – lhf

1

のような2つの別々の文字列で構成されたもう一つの可能​​性:

function convert(s) 
    return (s:gsub('.',function (s) 
         if s == ';' then return s end 
         return s:byte()..':' 
        end) 
      :gsub(':;',';') 
      :gsub(':$','')) 
end 

print(convert 'Hello;this;is;a;text') 
関連する問題